2014-10-22 49 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应该去。在您当前的代码中,您传递的是空字符串('')。