mcrypt_decrypt()错误更改密钥大小

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (58)

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;
}

扫码关注云+社区

领取腾讯云代金券