|
发表于 2022-7-26 15:34:11
|
显示全部楼层
- $ cat main.c
- #include "md5.h"
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- void convert(unsigned char dest[], const unsigned char src[], size_t size) {
- for(size_t i = 0; i < size; i++) {
- sprintf((char *)dest, "%02x", src[i]);
- dest += 2;
- }
- }
- int main(int argc, char *argv[]) {
- if(argc != 2) return -1;
- unsigned char encrypt[33] = "FishC";
- unsigned char decrypt[16];
- size_t len = strlen((char *)encrypt);
- size_t count = atoi(argv[1]);
- for(size_t i = 0; i < count; ++i) {
- MD5_CTX md5;
- MD5Init(&md5);
- MD5Update(&md5, encrypt, len);
- MD5Final(&md5, decrypt);
- convert(encrypt, decrypt, 16);
- len = 32;
- }
- for(size_t i = 0; i < 16; i++) {
- printf("%02x", decrypt[i]);
- }
- putchar('\n');
- return 0;
- }
- $ gcc-debug -o main main.c md5.c
- $ ./main
- $ ./main 1
- 9d22182e926ca703cd0f5926e7d57782
- $ ./main 2
- 350e44e9b0c8f650358be13c3d5fe3d3
- $ ./main 3
- ceec6528fe937599f882514f0b834991
- $ ./main 4
- 2cf4dbaab763db33f7963265d4c13d20
- $ ./main 5
- e8a797a565e194567906647b811c5cb1
- $ ./main 100
- 301bd274e0134e6c1a4fe86e30af1cd3
- $
复制代码 |
|