来自 Javascript 和 PHP 的不同哈希值


Different Hash Values from Javascript and PHP

我在javasript和PHP中使用HMAC,当我运行两个porgams并将两个函数的参数作为变量时,我得到了两个不同的HMAC值。 但是,如果我将它们作为字符串文字运行,那么一切正常。 我认为这与每种语言中的字符串变量编码方式有关,但我不知道如何解决它。 我正在使用的代码如下。

在下面的 php 函数中,$pwd1是从命令行检索的。

$k = hash_hmac('sha1', $pwd1, $salt);

在下面的javascript函数中,password是从json.parse(msg)语句中获取的。 然后我使用以下 HMAC 方法来自

<script type="text/javascript" src="http://crypto-js.googlecode.com/files/2.5.3-crypto-sha1-hmac.js"></script>

看起来像Crypto.HMAC(Crypto.SHA1,password,salt);.

谢谢。

我找到了答案。 PHP 和 Javascript 存储字符串的方式是有区别的。 当 PHP 从命令行运行时,就像我所做的那样,它存储字符串和回车符(用于输入变量),使字符串比不存储回车符的 Javascript 长一个字符。 因此,如果你想比较Javascript字符串和PHP字符串或散列它们,你必须从PHP变量中获取一个子字符串,从0到-1(-1是长度-1)来考虑PHP回车。