Hash 使用UTF-8字符更正SHA256实现

Hash 使用UTF-8字符更正SHA256实现,hash,utf-8,character-encoding,sha,Hash,Utf 8,Character Encoding,Sha,我遇到了比较不同语言/函数生成的SHA256哈希的问题 例如,SHA256(“í”)返回: f3df1f9c358ae8eceb8fce7c00614288d113ad55315f4ebb909774a7daadfc84 -或- 上面哪个哈希对于一个字符的字符串是正确的,处理UTF-8字符串的正确方法是什么 对于一个字符的字符串,上面哪个哈希是正确的 没有“正确”的答案。散列的是字节,而不是“字符”。对哪些字节进行哈希处理完全取决于字符串的编码 Windows-1252中的“í”是字节ED,散

我遇到了比较不同语言/函数生成的SHA256哈希的问题

例如,
SHA256(“í”)
返回:

f3df1f9c358ae8eceb8fce7c00614288d113ad55315f4ebb909774a7daadfc84
-或-

上面哪个哈希对于一个字符的字符串是正确的,处理UTF-8字符串的正确方法是什么

对于一个字符的字符串,上面哪个哈希是正确的

没有“正确”的答案。散列的是字节,而不是“字符”。对哪些字节进行哈希处理完全取决于字符串的编码

Windows-1252中的
“í”
是字节
ED
,散列如下:

f3df1f9c358ae8eceb8fce7c00614288d113ad55315f4ebb909774a7daadfc84
127035a8ff26256ea0541b5add6dcc3ecdaeea603e606f84e0fd63492fbab2c5
430e2ca27910b5ee6e0ec56a12b81325c763376cb8e25a60362dce9444424f95
UTF-8中的
“í”
是字节
C3 AD
,散列如下:

f3df1f9c358ae8eceb8fce7c00614288d113ad55315f4ebb909774a7daadfc84
127035a8ff26256ea0541b5add6dcc3ecdaeea603e606f84e0fd63492fbab2c5
430e2ca27910b5ee6e0ec56a12b81325c763376cb8e25a60362dce9444424f95
UTF-16LE中的
“í”
是字节
ED 00
,散列如下:

f3df1f9c358ae8eceb8fce7c00614288d113ad55315f4ebb909774a7daadfc84
127035a8ff26256ea0541b5add6dcc3ecdaeea603e606f84e0fd63492fbab2c5
430e2ca27910b5ee6e0ec56a12b81325c763376cb8e25a60362dce9444424f95
这在各种编程语言中的具体工作方式取决于它们用于字符串的语言和编码。

没有“UTF-8字符”这样的东西。有Unicode字符,如果需要,可以将它们编码为UTF-8。您根本没有告诉我们您对哪种语言感兴趣,但基本上过程是使用您选择的编码(例如UTF-8)将字符串编码为二进制数据,获取该字符串的SHA-256散列,然后使用十六进制或base64将该散列转换回字符串。