我使用此函数来提供一个自定义密钥,用于使用CryptoJS 加密字符串
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吗?
从文档中可以看出:
string mcrypt_decrypt ( string $cipher , string $key , string $data ,
string $mode [, string $iv ] )
所以最后一个论点是IV应该去哪里。在当前代码中,您正在传递一个空字符串(''
)。