1

ブラウザーでSymfonyMessageDigestPasswordEncoderを再作成しようとしています。

browserify と crypto モジュールに問題があります。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==

2 つの異なる結果が得られる理由について何か考えはありますか?

それ以外の場合、純粋な JS (ノードなし) で同じ結果を得る方法はありますか?

4

1 に答える 1