首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >更改密钥大小时出现mcrypt_decrypt()错误

更改密钥大小时出现mcrypt_decrypt()错误
EN

Stack Overflow用户
提问于 2014-12-03 00:37:57
回答 8查看 35.8K关注 0票数 19

mcrypt_decrypt():此算法不支持大小为15的键。仅支持大小为16、24或32的密钥

如何解决此问题?我的密钥已设置-无法更改它。这必须是一个本地更改,我认为我的本地PHP版本对于我加载的项目来说太高级了。我该如何解决这个问题呢?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2014-12-03 00:44:33

你更新到5.6了吗?上面写着

不再接受

无效密钥和iv大小。如果输入无效,mcrypt_decrypt()现在将抛出警告并返回FALSE。以前,密钥和IV是用'\0‘字节填充到下一个有效大小的。

阅读这句话的最后一行,您将在那里找到解决方案:)

mcrypt_decrypt():此算法不支持大小为15的键。仅支持大小为16、24或32的密钥

这意味着你需要用\0来填充你的钥匙(这就是以前的版本为你做的)

$key=$key."\0";
票数 46
EN

Stack Overflow用户

发布于 2015-11-25 03:31:32

我继续创建了一个基于Hanky 웃 Panky's answer的函数。

这可以与任何密钥长度一起使用,以确保其大小正确。

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;
}
票数 14
EN

Stack Overflow用户

发布于 2016-11-10 03:03:38

对于Laravel 5

只需运行php artisan key:generate

Application key [EaaJgaD0uFDEg7tpvMOqKfAQ46Bqi8Va] set successfully.

如果没有看到密钥更新,只需将其粘贴到.env文件中即可。

APP_KEY=EaaJgaD0uFDEg7tpvMOqKfAQ46Bqi8Va

刷新页面

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27254432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档