我得到了一个 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() 获得的输出进行比较(通过 strcmp() 或 memcmp(),我并不挑剔)。
编辑2:
安托万明白了。memcmp() 可以解决问题!非常感谢!