Ich versuche Symfony's MessageDigestPasswordEncoder
im Browser neu zu erstellen.Knoten Crypto Key Ableitung von einem Passwort erzeugt unterschiedliche Ergebnisse mit browserify
Ich habe ein Problem mit browserify und crypto-Modul. Ich versuche, Hash mit JavaScript aber ohne Knoten zu generieren.
Hier ist mein Code mit Knoten:
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"));
Es gibt:
qmNs3bqtTeoS4uRq2Chh1fUNPu+lzn3KR7mWFHAq5NEPrK0QZ9XkLDUniZ39uosnozNrPL7mByzUZ/A19Io4sQ==
Nun, ich brauche zu implementieren dieser Knoten ohne Berücksichtigung ich browserify
verwendetbrowserify index.js > crypto.js
I erstellt eine Testseite und enthalten:
<script src="crypto.js"></script>
Die Konsole Protokollausgabe ist:
JtDIZwGDybG6tG7PE2SeXS0BEa4vOoxpu3y7Il6P6OQL9djmrk5S0vjTGoQowGO22OvQ58tC05eZBt/yvyJv+A==
Jede Idee, warum ich habe zwei unterschiedliche Ergebnisse?
Gibt es sonst eine Möglichkeit, dasselbe Ergebnis in reinem JS (ohne Knoten) zu erhalten?
Sie könnten beginnen, einige standardisierte Schema wie PBKDF2 statt rollen Sie Ihre eigenen verwenden. Ich vermute, dass das Problem etwas mit dem '' binary' 'in 'hash.digest (' binary ')' zu tun hat. Wie auch immer, SJCL bietet eine schnelle PBKDF2-Implementierung sowie das crypo-Modul von node.js. –
Vielen Dank, aber ich versuche, den Weg zu reproduzieren [Symfony verschlüsselt Passwort] (http://api.symfony.com/3.0/Symfony/Component/Security/Core/Encoder/MessageDigestPasswordEncoder.html). Daher kann ich PBKDF2 nicht verwenden. – Decap