SHA256为每个输入生成相同的哈希值

时间:2012-04-23 11:40:32

标签: c

我正在使用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); 
   }
} 

1 个答案:

答案 0 :(得分:2)

您在循环中更改input_info(取决于计数器),但不要将其用于哈希生成。您只使用device_info)。

我认为,unsigned char来电中memcpy的所有演员阵容实际上都是unsigned char*投射到了{{1}}。你的代码中还有其他语法特性。