【发布时间】:2013-12-17 19:03:10
【问题描述】:
我得到了一个 MD5 输出(一个 16 字节的十六进制字符串),我需要弄清楚用于生成哈希的消息是什么。
我想将它与 gcrypts gcry_md_hash_buffer() 的输出进行比较,但我确定如何以strcmp() 知道两者相同的方式声明它。
我之前试过这个:
char answerHash[16] = {0x57, 0x50, 0x1a, 0xc7, 0xb9, 0xd5, 0x44, 0x0a, 0xde, 0xe8, 0xb3, 0xdd, 0x97, 0x09, 0x72, 0xcb};
但是当我尝试 printf() 时,这最终吃掉了不同字符串的一部分
问题区域示例:
gcry_md_hash_buffer(GCRY_MD_MD5, result, answerString, strlen(answerString));
char answerHash[16] = {0x57, 0x50, 0x1a, 0xc7, 0xb9, 0xd5, 0x44, 0x0a, 0xde, 0xe8, 0xb3, 0xdd, 0x97, 0x09, 0x72, 0xcb};
if(strcmp(result, answerHash) == 0){
printf("strcmp() works.\n");
}
编辑:我认为我的解释不正确。让我们再试一次。
教授有一个秘密消息,并给了我们它的 MD5 哈希输出。他要我们编写一个程序,通过蛮力找到原始消息。
消息有 11 个字符长,但他已经告诉我们其中 5 个字符是什么。从这里,我猜到了秘密信息,但我仍然要编写程序。 :(
我的 MD5 部分已经在工作,但我需要弄清楚如何将我从 MD5 获得的输出与他给我们的 MD5 进行对比。
换句话说,我需要声明一个变量,以便它包含 profs 哈希,并且可以与我从 gcry_md_hash_buffer( )。
EDIT2:
安托万明白了。 memcmp() 可以解决问题!非常感谢!
【问题讨论】: