更新到 php 5.6.2 时的 mcrypt 警告;不支持大小为 x 的键

mcrypt warning on update to php 5.6.2; Key of size x not supported

我们从 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
);

必须重新加密所有内容将是一个很大的痛苦,有没有什么东西可以填充密钥,以便它像以前一样工作?

这里应该没有任何安全漏洞。

在此更改之前,无效大小的键被填充 [=10=] 直到下一个有效键大小,所以大概你应该能够通过添加四个空字节 [=11] 来对你的键做同样的事情=] 到最后。

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

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