【问题标题】:mcrypt warning on update to php 5.6.2; Key of size x not supported更新到 php 5.6.2 时的 mcrypt 警告;不支持大小为 x 的密钥
【发布时间】:2015-05-10 19:15:26
【问题描述】:

从 PHP 5.5.18 更新到 PHP 5.6.2 后,我们收到以下警告:

mcrypt_decrypt(): Key of size 20 not supported by this algorithm. Only keys of sizes 16, 24 or 32 supported

加密算法在此之前似乎工作正常:

$decrypttext = mcrypt_decrypt(
  MCRYPT_RIJNDAEL_256,
  $this->keys[$key_label],
  $crypttext,
  MCRYPT_MODE_ECB,
  $iv
);

必须重新加密所有内容会很痛苦,我可以用什么东西来填充密钥,以便它像以前一样工作吗?

大概这里没有任何安全漏洞。

【问题讨论】:

  • 查看 5.5 和 5.6 之间的向后不兼容更改,担心您将不得不编写一个 Fixer,因为您从 PHP Documentation 开始做错了
  • “大概这里没有任何安全漏洞”——这可能是每一个被黑客入侵的服务之前都表现出的态度……
  • @CBroe “大概这里没有任何安全漏洞” - 我想不出任何安全漏洞,但如果有人知道,你可以告诉我。不像“我不能被安全所困扰”..所以感谢你不必要的高而有力的评论。
  • str_pad($this->keys[$key_label], "\0", 32) 应该这样做,但是MCRYPT_RIJNDAEL_256?欧洲央行模式?呜呜 :(
  • github 扩展提供经过身份验证的加密。 libmcrypt 自 2007 年以来已被废弃,在 PHP 7 中,可能会被 openssl 取代。

标签: php security mcrypt


【解决方案1】:

在此更改之前,无效大小的键用\0 填充到下一个有效键大小,因此您应该能够通过在末尾添加四个空字节\0\0\0\0 来对您的键执行相同操作。

现在需要注意的是,这当然是一个弱密钥,不会提供预期的安全级别,但它不会比现在更糟,而且您在如何操作方面还有其他重大安全问题'也在加密,例如使用ECB模式,这通常对安全性是灾难性的。

因此,当您确实决定更新时,选择有效大小的密钥只是需要进行的更改之一,您可能应该尽快这样做你可能可以。

【讨论】:

    猜你喜欢
    • 2016-07-22
    • 2011-05-02
    • 2018-07-11
    • 2015-09-03
    • 2016-11-03
    • 1970-01-01
    • 2016-11-25
    • 2017-08-28
    • 2021-12-05
    相关资源
    最近更新 更多