我正在尝试在浏览器中重新创建Symfony 。MessageDigestPasswordEncoder
我对 browserify 和加密模块有一些问题。我尝试使用 JavaScript 但不使用 Node.js 生成哈希。
这是我的节点代码:
var crypto = require('crypto');
var encodePassword = function (raw, salt) {
var salted = raw + '{'+salt+'}',
hash = crypto.createHash('sha512').update(salted, 'utf-8');
for (var i = 1; i < 5000 ; i++) {
hash = crypto.createHash('sha512').update(hash.digest('binary')+salted);
}
return hash.digest('base64');
};
console.log(encodePassword("admin", "81b6zjhf64w8kogsgkgw804ss8gc0w0"));
它返回:
qmNs3bqtTeoS4uRq2Chh1fUNPu+lzn3KR7mWFHAq5NEPrK0QZ9XkLDUniZ39uosnozNrPL7mByzUZ/A19Io4sQ==
现在,考虑到我需要在没有节点的情况下实现它,我使用了 browserify
browserify index.js > crypto.js
我创建了一个测试页面,包括:
<script src="crypto.js"></script>
控制台日志输出为:
JtDIZwGDybG6tG7PE2SeXS0BEa4vOoxpu3y7Il6P6OQL9djmrk5S0vjTGoQowGO22OvQ58tC05eZBt/yvyJv+A==
知道为什么我有两个不同的结果吗?
否则,有没有办法在纯 JS(无节点)中获得相同的结果?