鉴于这个php。
$hash = hash('sha512', $salt . $password, TRUE);
/* point A */
$hash = hash('sha512', $hash . $password, TRUE);
/* point B */
我写了这个javascript。
let hash = crypto.createHash('sha512');
hash.update(salt + password);
let buffer = hash.digest();
/* point A */
hash = crypto.createHash('sha512');
hash.update(buffer.toString() + password);
buffer = hash.digest();
/* point B */
在A点,缓冲区在PHP和Javascript中对所有的盐和密码字符串都有相同的值。但是在B点,它们是不同的,所以我的第二个调用hash.update有问题。感谢任何建议。
好了,我想我已经明白了。
let hash = crypto.createHash('sha512');
hash.update(salt + password);
let buffer = hash.digest();
/* point A */
hash = crypto.createHash('sha512');
hash.update(Buffer.concat([buffer, Buffer.from(password)]));
buffer = hash.digest();
/* point B */