2014-10-22 96 views
-1

我使用這個功能來提供定製的密鑰加密使用CryptoJS解密CryptoJS在PHP - 哪裏的IV去

function doHash(msg){ 
    msg = String(msg); 
    var key = CryptoJS.enc.Hex.parse('000102030405060708090a0b0c0d0e0f'); 
    var iv = CryptoJS.enc.Hex.parse('101112131415161718191a1b1c1d1e1f'); 

    var encrypted = CryptoJS.AES.encrypt(msg, key, { iv: iv }); 
    return encrypted; 

} 

一個字符串,而不是提供一個密碼我直接供應的IV和密鑰加密。

現在我需要解密密文在PHP中: 這是我發現:

function aes_decrypt($encrypted,$key) 
{ 
    // if $encrypted is HEXed, then return it to binary 
    $encrypted = pack('H*',$encrypted); 

    $key = mysql_aes_key($key); 
    return rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128,$key,$encrypted,MCRYPT_MODE_ECB,''),"\x00..\x1F"); 
} 

這是這個Mcrypt的AES解密功能的直接的例子。

我看不到任何地方IV去解密這個。我是否缺少 的東西,解密時不需要IV嗎?

回答

1

似乎很清楚from the docs

string mcrypt_decrypt (string $cipher , string $key , string $data , 
         string $mode [, string $iv ]) 

所以最後一個參數是在IV應該去。在您當前的代碼中,您傳遞的是空字符串('')。