我想将密码哈希算法从PHP转换为Javascript与Node.JS一起使用。尽管对于每个版本的代码,我的结果都不同。我想我已经正确地转换了它,但也许我错过了一些东西。PHP密码哈希算法结果与Javascript结果不同
测试密码是:Cake99
PHP结果:
2392893c9280d10e82fcef37be0e94df
JavaScript的结果:
73a75e6c999d773460748e269ec324c4
PHP版本
function pCrypt($password)
{
$md5password = 'superSecretMD5Pass';
$s = md5($password) . md5($md5password);
$j = 0;
for ($i = 0; $i < strlen($s); $i++)
{
if ($j >= strlen($md5password)) $j = 0;
$s[$i] = $s[$i]^$md5password[$j];
$j++;
}
return md5($s);
}
JavaScript版本
function pCrypt(password) {
var md5password = 'superSecretMD5Pass';
var s = md5(password) + md5(md5password);
var j = 0;
for (i = 0; i < s.length; i++) {
if (j >= md5password.length) {
j = 0;
}
s[i] = s[i]^md5password[j];
j++;
}
return md5(s);
}
这看起来像你应该用包维护者文件中的错误。 – SomeKittens
为什么你会使用哈希方法呢?!?!? http://codahale.com/how-to-safely-store-a-password/ – Petah
@ SomeKittensUx2666,纯MD5结果没有问题。我不认为这是包装。 – Andrew