这是我第一次遇到此错误,我对如何修复此错误感到非常困惑。我将在下面发布我的代码。请求提供其他任何便利的内容。任何帮助将不胜感激。
function encryptAes($string, $key)
{
$string = $this->addPKCS5Padding($string);
$crypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $string, MCRYPT_MODE_CBC, $key);
return strtoupper(bin2hex($crypt));
}
更新:第777行的代码
function _encode_crypt($post = NULL)
{
return "@".$this->encryptAes($post,$this->encryption_password);
}
答案 0 :(得分:0)
我将假设您获得的错误是准确的,并且您实际上在将加密密钥($ key)和初始化向量(也是$ key)作为相同值时犯了一个诚实的错误。这在很多方面都是错误的......
而是试试这个:
$iv = mcrypt_create_iv(
mcrypt_get_iv_size(
MCRYPT_RIJNDAEL_128,
MCRYPT_MODE_CBC
),
MCRYPT_DEV_URANDOM
);
encryptAes('blah blah', 'some super secret key', $iv);
function encryptAes($string, $key, $iv)
{
$string = $this->addPKCS5Padding($string);
$crypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $string, MCRYPT_MODE_CBC, $iv);
return strtoupper(bin2hex($crypt));
}
您需要将此初始化向量存储在能够解密的位置。
显然,您传递的$ key值是您正在使用的加密算法的初始化向量的不正确长度。您正在使用MCRYPT_RIJNDAEL_128,因此iv大小应为128位(16字节)。