警告:mcrypt_encrypt():此算法不支持大小为 10 的密钥。仅支持尺寸为 16、24 或 32 的密​​钥

swd*_*kaj 0 php encryption mcrypt encryption-symmetric password-encryption

我正在尝试使用 加密密码mcrypt_encrypt()。它在 上工作正常localhost,但是当进入在线状态时,我的输出是""并且我收到此警告:

警告:mcrypt_encrypt():此算法不支持大小为 10 的密钥。仅支持尺寸为 16、24 或 32 的密​​钥

这是我正在使用的代码:

$text="thisismypassword123";
$salt="1234567824";
return trim (
    base64_encode (
        mcrypt_encrypt (
            MCRYPT_RIJNDAEL_256, $salt, $text, MCRYPT_MODE_ECB, mcrypt_create_iv (
                mcrypt_get_iv_size (
                    MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB
                ),
                MCRYPT_RAND
            )
        )
    )
);
Run Code Online (Sandbox Code Playgroud)

造成这种情况的原因是什么?我可以采取什么措施来解决这个问题?

小智 5

解决向后兼容性的简单方法是用\0填充当前密码。

例如,对于 PHP 5.4 上当前的 $key = "1234567890",由于当前密钥大小为 10,它将在 PHP 5.6 版本上停止工作。

要解决此问题而不对应用程序产生任何影响,只需更改为 $key = "1234567890\0\0\0\0\0\0" (直到达到1632,...)