1

我在 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);

谢谢。

4

1 回答 1

1

我找到了答案。PHP 和 Javascript 存储字符串的方式有所不同。当 PHP 从命令行运行时,就像我在做的那样,它存储字符串和回车(用于输入变量),使字符串比不存储回车的 Javascript 长一个字符。因此,如果您想以任何方式比较 Javascript 字符串和 PHP 字符串或对它们进行哈希处理,您必须从 PHP 变量中获取一个从 0 到 -1(-1 为长度为 1)的子字符串,以说明 PHP 回车。

于 2012-04-21T17:44:09.963 回答