代码的第一部分是主程序。结合第二个代码,当我使用 gcc b2.c md5.c -o bruteforce -l crypto 运行它时,没有任何反应。终端只是闪烁但没有输出任何内容。我一直在检查代码,但找不到问题所在。任何帮助将不胜感激。谢谢!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "md5.h"
#define TARGET "de1b2a7baf7850243db71c4abd4e5a39"
int main()
{
char word[10] = "-----";
for(char c0 = 'a'; c0 <= 'z'; c0++)
for(char c1 = 'a'; c1 <= 'z'; c1++)
for(char c2 = 'a'; c2 <= 'z'; c2++)
for(char c3 = 'a'; c3 <= 'z'; c3++)
for(char c4 = 'a'; c4 <= 'z'; c4++)
{ // {Assemble chars into a word
word[0] = c0;
word[1] = c1;
word[2] = c2;
word[3] = c3;
word[4] = c4;
}
//hash the word
char *hash = md5(word, strlen(word));
//check for match
if(strcmp(hash, TARGET) == 0){
printf("FOUND IT! %s\n", word);
exit(0);
}
return 0;
}
包含 md5 哈希代码的第二部分是
#include <stdio.h>
#include <stdlib.h>
#include <openssl/md5.h>
char *md5(const char *str, int length)
{
int n;
MD5_CTX c;
unsigned char digest[MD5_DIGEST_LENGTH];
char *out = (char*)malloc(MD5_DIGEST_LENGTH * 2 + 1);
MD5_Init(&c);
while(length > 0)
{
if(length > 512)
{
MD5_Update(&c, str, 512);
}
else{
MD5_Update(&c, str, length);
}
length -=512;
str += 512;
}
MD5_Final(digest, &c);
for(n = 0; n < MD5_DIGEST_LENGTH; ++n)
{
snprintf(&(out[n*2]), MD5_DIGEST_LENGTH*2, "%02x", (unsigned int)digest[n]);
}
out[MD5_DIGEST_LENGTH * 2] = '\0';
return out;
}