Polarssl - SHA1在输入特殊字符时给出不同的结果

时间:2014-12-25 13:29:34

标签: c sha1 polarssl

我正在尝试哈希一些包含土耳其字符的数据。例如;当我用Polarssl散列"aaç"字符串时,sha-1结果就是这样:

10 bf 94 7f 94 65 9f b0 66 76 97 b d4 25 de 9d e4 85 8e ca

但我从互联网上看到同样的字符串(aaç)哈希结果如下:

97 dd 7a 00 e8 ff 49 09 47 60 03 50 83 db 7c ba 87 07 0f d9

为什么这两个sha1结果会有所不同?

1 个答案:

答案 0 :(得分:1)

文字编码差异。在ISO 8859-1和UTF-8编码中,字符ç的编码方式不同,这种差异导致生成的字节序列的SHA-1哈希值不同:

SHA1("aa\xe7")     = 10bf947f94659fb06676970bd425de9de4858eca (ISO 8859-1)
SHA1("aa\xc3\xa7") = 97dd7a00e8ff49094760035083db7cba87070fd9 (UTF-8)