CryptoJS et clés/IV longueur

J'ai une question à propos de la clé AES et IV de la longueur.

Tout d'abord, si, par exemple, je suis en utilisant médicaments OpenSSL extension et openssl_encrypt() méthode, je peux clairement voir que la clé pour 256-bit AES devrait être 32 octets, et IV lancers d'alerte si elle est différente de celle d' 16 octets. Je peux le comprendre, et tout va bien.

Cependant, dans CryptoJS bibliothèque la clé et IV de la longueur est frustrant. Ceci est un exemple:

var text = "test",
    key  = "us5N0PxHAWuIgb0/Qc2sh5OdWBbXGady",
    iv   = "zAvR2NI87bBx746n";

key = CryptoJS.enc.Base64.parse(key);
iv  = CryptoJS.enc.Base64.parse(iv);

crypted = CryptoJS.AES.encrypt(text, key, { iv: iv });

où la clé est 32 octets, IV est 16. CryptoJS nécessite d'analyser, et après CryptoJS.enc.Base64.parse() - je obtenir 48 et 24 octets en conséquence. J'espère que ces valeurs obtiendrez tronquée requis 256-bit AES longueur, et la poursuite de l'expansion de n octets ne sera pas pertinente, et donc, résultant d'un cryptogramme sera le même.

Mais ce n'est pas ce qui se passe réellement. Quand je passe à CryptoJS.AES.encrypt() de plus grande taille de la clé et de même IV, il s'agit de produire de sortie différents. Donc ma question est, pourquoi? Quelle est la différence entre CryptoJS bibliothèque et OpenSSL dans ce cas?

OriginalL'auteur Damaged Organic | 2015-04-08