为什么sha1为相同的输入字符串返回不同的哈希值?

苏克

这是一个非常简单的程序,它接受整数并将其转换为字符串。从那里,我使用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);

在这里,您从头开始初始化几个字节,以终止\0但是尾随内存未初始化。您可以通过使用显式数组初始化器(char input[50] = { 0 };)或调用来实现memset(input, 0, sizeof(input))

//compute hash
SHA1(input,sizeof(input),myHash);

在这里,您将在整个50字节输入中计算SHA-1哈希。也许您想使用strlen(input)代替sizeof(input)

最后提示:使用已知的工作工具作为参考。例如:

$ echo -n -1613543 | sha1sum 
e3f0005827c95440fb6a9045b400d3b2d64001f8  -
$ echo -n -1613543 | openssl sha1
(stdin)= e3f0005827c95440fb6a9045b400d3b2d64001f8

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么hashrow()为相同的字符串值生成不同的哈希?

来自分类Dev

使用所有字符串获取相同的sha1哈希

来自分类Dev

为什么 OpenSSL 会在我的终端中返回不同的 SHA1 哈希输出?

来自分类Dev

为什么将用哈希值哈希的字符串哈希作为盐返回哈希值?

来自分类Dev

为什么DateTime.TryParseExact()为这些输入字符串返回不同的时区?

来自分类Dev

字符串的sha1哈希的十六进制形式?

来自分类Dev

字符串的sha1哈希的十六进制形式?

来自分类Dev

sha-512为同一字符串返回不同的值

来自分类Dev

我可以使用sha1,sha256 lib生成的字符串作为哈希键吗

来自分类常见问题

为什么package-lock.json将完整性哈希值从sha1更改为sha512?

来自分类Dev

从双向链表打印时,为什么我得到相同的字符串值但算术值不同

来自分类Dev

C#String.getHashCode()为不同的字符串返回相同的值

来自分类Dev

为什么PHP crypt()函数针对两个不同的字符串返回相同的内容?

来自分类Dev

PHP和C#SHA256哈希返回不同的字符串

来自分类Dev

将字符串值传递给需要SHA1字符串的WSDL API

来自分类Dev

在python中计算字符串的SHA1

来自分类Dev

在Crypto ++中获取Unicode字符串的SHA1

来自分类Dev

为什么Node crypto会为同一字符串返回不同的值?

来自分类Dev

将数组设置为输入值后,为什么数组变成由','分隔的字符串?

来自分类Dev

为什么以下字符串比较返回不同的结果?

来自分类Dev

为什么字符串s1 =“ cat”和字符串s2 = new String(“ cat”)的哈希码相同?

来自分类Dev

为什么从字符串返回的空数组在golang中的长度为1?

来自分类Dev

git shasum 和节点 sha1 不产生相同的哈希值

来自分类Dev

为什么sha1sum在相同输入下的行为不同?

来自分类Dev

从双向链接列表打印时,为什么我得到相同的字符串值但算术值不同

来自分类Dev

相同的Python代码对于相同的输入字符串返回不同的结果

来自分类Dev

从两个相同的字符串中获取不同的哈希值

来自分类Dev

为什么使用crypto-js为不同的pdf文件获得相同的哈希值?

来自分类Dev

为什么Base64.decode为不同的字符串产生相同的字节数组?

Related 相关文章

  1. 1

    为什么hashrow()为相同的字符串值生成不同的哈希?

  2. 2

    使用所有字符串获取相同的sha1哈希

  3. 3

    为什么 OpenSSL 会在我的终端中返回不同的 SHA1 哈希输出?

  4. 4

    为什么将用哈希值哈希的字符串哈希作为盐返回哈希值?

  5. 5

    为什么DateTime.TryParseExact()为这些输入字符串返回不同的时区?

  6. 6

    字符串的sha1哈希的十六进制形式?

  7. 7

    字符串的sha1哈希的十六进制形式?

  8. 8

    sha-512为同一字符串返回不同的值

  9. 9

    我可以使用sha1,sha256 lib生成的字符串作为哈希键吗

  10. 10

    为什么package-lock.json将完整性哈希值从sha1更改为sha512?

  11. 11

    从双向链表打印时,为什么我得到相同的字符串值但算术值不同

  12. 12

    C#String.getHashCode()为不同的字符串返回相同的值

  13. 13

    为什么PHP crypt()函数针对两个不同的字符串返回相同的内容?

  14. 14

    PHP和C#SHA256哈希返回不同的字符串

  15. 15

    将字符串值传递给需要SHA1字符串的WSDL API

  16. 16

    在python中计算字符串的SHA1

  17. 17

    在Crypto ++中获取Unicode字符串的SHA1

  18. 18

    为什么Node crypto会为同一字符串返回不同的值?

  19. 19

    将数组设置为输入值后,为什么数组变成由','分隔的字符串?

  20. 20

    为什么以下字符串比较返回不同的结果?

  21. 21

    为什么字符串s1 =“ cat”和字符串s2 = new String(“ cat”)的哈希码相同?

  22. 22

    为什么从字符串返回的空数组在golang中的长度为1?

  23. 23

    git shasum 和节点 sha1 不产生相同的哈希值

  24. 24

    为什么sha1sum在相同输入下的行为不同?

  25. 25

    从双向链接列表打印时,为什么我得到相同的字符串值但算术值不同

  26. 26

    相同的Python代码对于相同的输入字符串返回不同的结果

  27. 27

    从两个相同的字符串中获取不同的哈希值

  28. 28

    为什么使用crypto-js为不同的pdf文件获得相同的哈希值?

  29. 29

    为什么Base64.decode为不同的字符串产生相同的字节数组?

热门标签

归档