cryptojs: Wie generieren AES passphrase
Möchte ich zum generieren einer 256-bit-Passwort für mein AES-Verschlüsselung. Wenn ich das Passwort nach der Verschlüsselung ist es anders als mein initial-Passwort. Was mache ich falsch? Oder gibt es ein Sicherheits-Mechanismus, ich bin mir nicht bewusst?
Mein code:
password=Generate_key();
var encrypted = CryptoJS.AES.encrypt("Message", password);
//Those two should be the same
document.write(password+"<br>");
document.write(encrypted.key);
function Generate_key() {
var key = "";
var hex = "0123456789abcdef";
for (i = 0; i < 64; i++) {
key += hex.charAt(Math.floor(Math.random() * 16));
//Initially this was charAt(chance.integer({min: 0, max: 15}));
}
return key;
}
Die Ausgabe ist also
0b05308c9a00f07044416bad7a51bacd282fc5c0c999551a4ff15c302b268b20
4df875993770411044fb35953166ee7833c32ca0741e9fec091dfa10138039e8
Ist das normal oder mache ich etwas falsch hier?
Danke für die Hilfe!
Math.floor(Math.random() * 16)
ist nicht äquivalent zuchance.integer({min: 0, max: 15})
. Sie sollten versuchenMath.round(Math.random() * 15)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verschlüsselung erfolgt mit einer Taste, die eine Reihe von binären bits, kein Passwort, was bedeutet, eine lesbare Zeichenfolge.
Gehen von einem Passwort einen Schlüssel, man kann mit einem Password Based Key Derivation Function, wie PBKDF2. Crypto-JS bereits ein PBKDF2-Funktion built-in, d.h.
In der Regel verwenden Sie eine möglichst hohe iterationsanzahl, wie Sie bekommen können, Weg mit.
Salz sollte ein zufälliger Wert, wie im Beispiel oben, müssen Sie, natürlich, zu speichern, dass Wert zusammen mit dem iteration-count, um die gleichen Schlüssel die gleiche passphrase gegeben.
PBKDF2
Schlüssel Größe in 32-bit-Worte!Fand ich die Lösung. Definieren Sie Ihre eigenen Schlüssel unter Verwendung
var encrypted = CryptoJS.AES.encrypt("Message", Schlüssel { iv: iv });
Also mein Quellcode: