内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
mcrypt_decrypt():此算法不支持大小为15的密钥。只支持尺寸16,24或32的按键
我如何解决这个问题?我的密钥已设置 - 无法更改。它必须是本地更改,我认为我的本地PHP版本对于我加载的项目来说太高级了。我怎样才能解决这个问题?
你有更新到5.6吗?它说
无效的密钥和iv大小不再被接受。如果输入无效,mcrypt_decrypt()现在将引发警告并返回FALSE。以前,键和IV用'\ 0'字节填充到下一个有效大小。
阅读该报价的最后一行,在那里你会找到你的解决方案:)
mcrypt_decrypt():此算法不支持大小为15的密钥。只支持尺寸16,24或32的按键
这意味着你需要填写你的密钥\0
(这是以前的版本为你做的)
$key=$key."\0";
这可以用于任何密钥长度,以确保它是正确的大小。
function pad_key($key){
// key is too large
if(strlen($key) > 32) return false;
// set sizes
$sizes = array(16,24,32);
// loop through sizes and pad key
foreach($sizes as $s){
while(strlen($key) < $s) $key = $key."\0";
if(strlen($key) == $s) break; // finish if the key matches a size
}
// return
return $key;
}