SHA1 hmac PHP与Javascript - 结果不同?

时间:2010-12-30 19:14:24

标签: php javascript sha1

您好 我在javascript中使用类来散列字符串: https://ssl.bsk.com.pl/mobi/js/sha1.js

hex_hmac_sha1("927545161", "asdasdasdasdś") ;

结果是: 5db0194c834d419fc5d68b72c88af1ac8ee749d6

在PHP中我正在散列:

echo hash_hmac('sha1', "asdasdasdasdś", '927545161');

但结果是: 0b115775a20bed9922b6a9cc934cb5328fe71ade

哪里出错? 5db0194c834d419fc5d68b72c88af1ac8ee749d6!= 0b115775a20bed9922b6a9cc934cb5328fe71ade

1 个答案:

答案 0 :(得分:5)

PHP将UTF-8字符串解释为8位字符序列。而在Javascript中,每个字符都可以解析为Unicode代码点。

您的压缩和完全不可读的Javascript实现使用.charCodeAt()将字符串转换为十六进制字符串。我没有费心去完全调查它,但很有可能"ś".charCodeAt(0)只是解析为347,而转换的其余部分预计会在8位范围0内得到一个值255