gpt4 book ai didi

c - 程序说哈希值不同,但事实并非如此

转载 作者:行者123 更新时间:2023-11-30 20:11:20 26 4
gpt4 key购买 nike

我有一个程序,可以从文件生成哈希 key 并显示该哈希。我试图检查结果哈希键是否对应于预期的哈希键。但这不起作用,因为当哈希键与预期相同时,我收到消息说“哈希不同”。你看出什么地方不正确了吗?

与问题相关的一些变量。

    BYTE rgbFile[BUFSIZE];
DWORD cbRead = 0;
BYTE rgbHash[MD5LEN];
DWORD cbHash = 0;
CHAR rgbDigits[] = "0123456789abcdef";
PCSTR filename = "c:\\Users\\jax\\Desktop\\files\\test.txt";
CHAR hashExpected[] = "4ab5d20e55ef73e4f412d73c2a201e";

在下面的代码中,它显示一条消息,例如“文件哈希为“4ab5d20e55ef73e4f412d73c2a201e”,并且我进行了比较:

        DWORD i;
CHAR hashResult= "";
printf("Hash of file %s is: ", filename);
for (i = 0; i < cbHash; i++)
{
printf("%c%c",
rgbDigits[rgbHash[i] >> 4],
rgbDigits[rgbHash[i] & 0xf]);
hashResult = rgbDigits[rgbHash[i] >> 4];
hashResult += rgbDigits[rgbHash[i] & 0xf];

}

printf("\n");
printf(hashResult);
if(hashResult == hashExpected){
printf("hash is the same");
}
else{
printf("hash is different");
}

更新:我也总是收到“不正确”消息:

        DWORD i;
CHAR hashResult[] = {};
printf("Hash of file %s is: ", filename);
for (i = 0; i < cbHash; i++)
{
printf("%c%c",
rgbDigits[rgbHash[i] >> 4],
rgbDigits[rgbHash[i] & 0xf]);
hashResult[i] = rgbDigits[rgbHash[i] >> 4];
hashResult[i] += rgbDigits[rgbHash[i] & 0xf];


}
if(hashResult == hashExpected){
printf("Hash is the same");
}
else{
printf("Hash is different");
}

更新:

BOOL test( char array1[] , char array2[] )
{
int i;
for( i = 0; array1[i] && array2[i]; ++i )
{
if( array1[i] != array2[i] )
{
return( FALSE );
}
}
return( TRUE );
}

最佳答案

至少在比较中,您在类型方面存在一些重大问题

if(hashResult == hashExpected){

hashResult 是一个 CHARhashExpected(没有数组索引)是内存中 CHAR< 数组所在的地址 开始。您需要比较该数组中存储的实际值,而不仅仅是它所在的地址。

编辑:我注意到 hashResult 是一个 CHAR,而不是前面写的数组。无论哪种方式,hashResult == hashExpected 比较都是不合适的。

关于c - 程序说哈希值不同,但事实并非如此,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40922926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com