从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
);
重新加密所有内容将是一件非常大的痛苦,是否有一些东西可以用来填充密钥,以便它能像以前一样工作?
据推测,这里没有任何安全漏洞。
答案 0 :(得分:13)
在此更改之前,无效大小的密钥使用\0
填充到下一个有效密钥大小,因此您可能应该通过添加四个空字节\0\0\0\0
来对密钥执行相同操作到最后。
现在需要注意的是,这是一个弱密钥,无法提供预期的安全级别,但它不会比现在更糟糕,而且你还有其他重要的安全问题。也在加密,例如使用ECB模式,这通常是安全的灾难。
因此,当您做决定是时候更新时,选择有效大小的密钥只是需要进行的更改之一,您应该尽快做到这一点你切实可行。