我正在使用CodeIgniter加密库,一切正常,但现在我已将项目移至新服务器,并且简单地停止工作。
这个简单的测试:
List
它回归:
$this->load->library('encrypt');
$str = '12345';
$key = 'my-secret-key';
$encrypted = $this->encrypt->encode($str, $key);
var_dump($encrypted);
var_dump($this->encrypt->decode($encrypted, $key));
die();
(有时只出现PHP错误/警告)
由于
答案 0 :(得分:0)
始终使用精确长度密钥(AES为128,192或256位,精确长度为IV(AES为128位或16字节),否则会出现错误或添加一些未知填充。
错误很明显:
接收大小为38的初始化向量,但此加密模式需要大小为
IV的长度不正确。
当然存在提供的代码没有IV的问题。
此外,错误消息指出预期的IV长度为32个字节,即不是AES。可能是Rijndael使用256位密钥。这是使用mcrypt的常见错误,其中参数是块大小而不是密钥大小。密钥大小取决于传递密钥的大小。
MCRYPT_RIJNDAEL_256
是Rijndael,其块大小为256位,不是 AES,
MCRYPT_RIJNDAEL_128
是Rijndael,其块大小为128位, AES