【问题标题】:Warning: mcrypt_encrypt(): Size of key is too large for this algorithm警告:mcrypt_encrypt():该算法的密钥大小太大
【发布时间】:2015-01-19 15:37:56
【问题描述】:
function fnEncrypt($key,$string){

    return  base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $string, MCRYPT_MODE_CBC, md5($key)));
    }

fnEncrypt("6abd9b547f8d23b367dff1fc4g7ad457b7f7f85e","AB10|13213123");

我收到了类似的警告消息

警告:mcrypt_encrypt():密钥的大小对于该算法来说太大

如何解决这个问题?提前致谢

【问题讨论】:

    标签: php


    【解决方案1】:

    您的密钥太长,就像警告消息所指示的那样。

    截至 5.6.0,mcrypt_encrypt

    不再接受无效的keyiv 尺寸。如果输入无效,mcrypt_encrypt() 现在将发出警告并返回 FALSE。以前键和 IV 用 '\0' 字节填充到下一个有效大小。

    AES-256 的密钥大小为 32 字节;您的字符串长度为 40 个字符。

    另外,请查看该页面上的Example 1。这表明

    密钥应该是随机二进制,使用 scrypt、bcrypt 或 PBKDF2 将字符串转换为密钥

    这意味着,不要直接使用字符串作为键(就像你正在做的那样)。密钥派生函数不仅更安全,而且允许您使用任意长度的密码,同时生成正确的密钥长度。

    【讨论】:

      猜你喜欢
      • 2016-07-22
      • 2015-03-13
      • 2015-09-16
      • 2016-11-03
      • 1970-01-01
      • 2016-11-25
      • 2017-04-21
      • 1970-01-01
      • 2014-10-13
      相关资源
      最近更新 更多