这是一个非常简单的程序,它接受一个整数并将其转换为字符串。从那里,我使用SHA1对字符串进行散列,并将散列打印到控制台。但当我重新运行程序时,我会得到程序中定义的同一整数的不同哈希。知道为什么会发生这种情况吗?我该怎么解决?
这是我的节目。要编译,我使用:gcc -o myhash myhash.c -lcrypto
int main (int argc, char* argv[]){
//sha1 returns 20 byte hash
unsigned char myHash[SHA_DIGEST_LENGTH];
//my integer that I want to hash
int myInt = -1613543;
//convert to char string
char input[50];
snprintf(input,50,"%d",myInt);
//compute hash
SHA1(input,sizeof(input),myHash);
//print hash
int i;
for(i=0;i<SHA_DIGEST_LENGTH;i++){
printf("%02x", myHash[i]);
}
printf("n");
return 0;
}
您的SHA-1计算包括垃圾内存。
char input[50];
snprintf(input,50,"%d",myInt);
在这里,您在开始时初始化几个字节,以