为什么这个 Md5 暴力破解程序不起作用?

问题描述 投票:0回答:0

代码的第一部分是主程序。结合第二个代码,当我使用 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;


}
c linux md5 brute-force intermediate-code
© www.soinside.com 2019 - 2024. All rights reserved.