Je suis en train de changer les algorithmes de hachage de mon application node.js à partir de l'algorithme basé sur JS CryptoJS à l'implémentation de la crypto mise en œuvre.
Voici ma mise en œuvre :
var password = "password1";
var salt = generateSalt();
var iterations = 4000;
var keySize = 768/32;
var cryptoJSKey = CryptoJS.PBKDF2(password, salt, { "iterations": iterations , "keySize": keySize });
// base64 encoded key
cryptoJSKey = cryptoJSKey.toString(CryptoJS.enc.Base64);
require("crypto").pbkdf2( password, salt, iterations, keySize, function(err, derivedKey){
var nodeCryptoKey = new Buffer( derivedKey, "binary" ).toString( "base64" );
console.log( cryptoJSKey == nodeCryptoKey ); // always false!
});
Une chose que j'ai remarquée est que nodeCryptoKey
finit par être 32
et la clé cryptoJSKey a une longueur de 10 caractères. 192
. Si j'augmente le keySize
pour seulement le nœud crypto
version à 144
( keySize * 6
), la clé finit par être 192
caractères longs également - bien que ce soit toujours différent.
Est-ce que je fais quelque chose de mal ou est-ce que les implémentations sont simplement différentes les unes des autres ?