Учитывая это 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 они разные, поэтому что-то не так с моим вторым вызовом ha sh .update. Любые предложения приветствуются.