您好 我在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
答案 0 :(得分:5)
PHP将UTF-8字符串解释为8位字符序列。而在Javascript中,每个字符都可以解析为Unicode代码点。
您的压缩和完全不可读的Javascript实现使用.charCodeAt()
将字符串转换为十六进制字符串。我没有费心去完全调查它,但很有可能"ś".charCodeAt(0)
只是解析为347
,而转换的其余部分预计会在8位范围0
内得到一个值255
。