我正在使用SHA256在循环中的C中生成散列值,以及要生成散列的值,循环的计数器变量也会被传递。由于计数器变量的值在每次迭代中都会发生变化,因此我希望SHA256每次都返回不同的哈希值。但它每次都返回相同的哈希值。 请帮助!
先谢谢
代码:
int generate_sha256hash {
int loop = 0;
unsigned char hash_paramters[2] = {0};
unsigned char device_ids[2] = {0,0};
hash_paramters[0] = 0;
unsigned char pass_string = "PASSWORD";
for(loop = 1; loop < 10; loop++) {
hash_paramters[1] = loop;
memcpy((unsigned char)(&input_info[0]),(unsigned char )hash_paramters ,2);
memcpy((unsigned char)(&input_info[2]),(unsigned char )device_ids,2);
memcpy((unsigned char)(&device_info[4]),(unsigned char*)au8defaultPwd,8);
printf("\n Generating Hash Value ");
hash_value = SHA256(device_info,14,au8HashValue);
}
}
答案 0 :(得分:2)
您在循环中更改input_info
(取决于计数器),但不要将其用于哈希生成。您只使用device_info
)。
我认为,unsigned char
来电中memcpy
的所有演员阵容实际上都是unsigned char*
投射到了{{1}}。你的代码中还有其他语法特性。