【发布时间】:2015-06-21 13:45:56
【问题描述】:
我收到了一个不同的密码密钥,其中包含hash_hmac(),用于注册时生成的密钥和登录时使用完全相同的代码返回的密钥。
注册时使用的代码是:
$hash_key = 'mL993nHbLJe8dOeC242A8W';
$hmac = hash_hmac('sha256', $pass, $hash_key);
$hmac = substr($hmac, 0, 50);
用于创建要比较的键的代码是:
$hash_key = 'mL993nHbLJe8dOeC242A8W';
$hmac = hash_hmac('sha256', $pass, $hash_key);
$hmac = substr($hmac, 0, 50);
这是返回的内容:
53bccd32d23baf691bf9c0a01b0deaa079107a72b72f4a4c08 --- Pass Key Generated by Login
4c30997095ad3f061246ff22d096d3537f1d9d22653f533653 --- Pass Key Retrieved which was Generated at Registration
我正在使用substr($hmac, 0, 50);,它随每次注册而变化,但总是返回 50 个计数。不确定这是否是一个好主意,欢迎提出观点,但无论有没有substr($hmac, 0, 50);,都会出现同样的问题。
我也尝试过sha512 处理同样的问题。
上面的代码在我的计算机上的 wamp 上为我工作,但是当上传到共享主机时,出现了上述问题。 感谢您的帮助,
皮特
【问题讨论】:
-
你传递给值的 $pass 是什么?
-
在上面的例子中
$pass = '!Pb57Mb56!'; -
您的主机有什么样的设置?我正在使用 LAMP(Linux Mint 17.1、Apache2、最新稳定的 php),它对我来说返回得很好。
-
(操作系统:linux - Apache:2.2.29 - PHP:5.4.40)该站点托管在 Hostmonster (Bluehost) 不确定确切的 linux
-
也许这里有什么? stackoverflow.com/questions/362461/… 特别是字符编码部分。