Asa*_*aoz 18 php encryption mcrypt
mcrypt_decrypt():此算法不支持大小为15的密钥.仅支持尺寸为16,24或32的按键
我该如何解决这个问题?我的密钥已设置 - 无法更改它.它必须是本地更改,我认为我的本地PHP版本对于我加载的项目来说太先进了.我怎样才能解决这个问题?
Han*_*nky 43
你有没有更新到5.6?它说
不再接受无效的密钥和iv尺寸.mcrypt_decrypt()现在将抛出警告,如果输入无效,则返回FALSE.以前,键和IV用'\ 0'字节填充到下一个有效大小.
阅读该报价的最后一行,在那里你会找到你的解决方案:)
mcrypt_decrypt():此算法不支持大小为15的密钥.仅支持尺寸为16,24或32的按键
这意味着你需要填充你的密钥\0 (这是以前的版本为你做的)
$key=$key."\0";
Run Code Online (Sandbox Code Playgroud)
tro*_*ter 13
我继续根据Hanky웃Panky的回答创建了一个函数.
这可以与任何键长度一起使用,以确保它的大小正确.
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;
}
Run Code Online (Sandbox Code Playgroud)