2015-04-08 18 views
5

AES anahtarı ve IV uzunluğu hakkında bir sorum var.CryptoJS ve anahtar/IV uzunluğu

Her

Öncelikle, örneğin, ben uyuşturucuOpenSSL uzantısı ve openssl_encrypt() yöntemi kullanıyorum, ben açıkça 256 bit AES bayt olmalıdır için o anahtarı görebilir ve IV uyarı atıyor bayttan farklıysa. Bunu anlayabilirim ve her şey yolunda. Bununla birlikte, CryptoJS kitaplığındaki anahtar ve IV uzunluğu sinir bozucu olur. Ancak, . Anahtar bayt

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 }); 

IV : Bu işlem bir örnektir. CryptoJS bunu ayrıştırmayı gerektirir ve CryptoJS.enc.Base64.parse()'dan sonra buna göre 48 ve 24 bayt alırım. Bu değerlerin gerekli 256 bit AES uzunluğuna kesileceğini ve n baytlara daha fazla genişletmenin alakasız olacağını ve sonuçta şifreli metnin aynı olacağını umuyorum.

Ancak bu aslında gerçekleşmiyor. CryptoJS.AES.encrypt() büyük boyutlu anahtar ve bile IV'e geçtiğimde, farklı çıktılar üretiyor. Yani sorum şu, neden? Bu durumda CryptoJS kitaplığı ve OpenSSL arasındaki fark nedir?

cevap