gpt4 book ai didi

php - 为什么 Javascript sha1 和 PHP5 sha1 为 utf-8 字符串生成不同的结果?

转载 作者:可可西里 更新时间:2023-10-31 22:44:37 26 4
gpt4 key购买 nike

我有一个包含一些 utf-8 字符的字符串,比如“abc艾”,我发现 php5 sha1 生成的代码与 Javascript sha1 不同,谁能帮我解决这个问题?提前致谢。

PHP代码:

$str = "abc艾";
$result = sha1($str);

结果是 5345129746e444693aa1111c5840e4b57236f002

javascript代码:

var str = "abc艾"
var result = sha1(str)

结果是 8a2aa0fed185dcffb922b1c4d67a49105525bd6a

最佳答案

对于编码为 GB18030 (61 62 63 B0 AC) 的字符串,您从 PHP 获得的结果是正确的

您从 CryptoJS 获得的字符串对于编码为 UTF-8 (61 62 63 E8 89 BE) 的字符串是正确的。

这里没有冲突。您的 PHP 源文件是使用不正确的字符串编码保存的,因此您得到的结果不具有代表性。

请阅读What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text .简而言之,您作为“艾”处理的是 Unicode 字符,而不是“UTF-8 字符”。不同的系统可以有多种表示方式,这些不同的表示方式具有不同的 SHA1 和。

关于php - 为什么 Javascript sha1 和 PHP5 sha1 为 utf-8 字符串生成不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16761843/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com