警告:mcrypt_encrypt():此算法的密钥大小太大

SDF*_*SDF 2 php

function fnEncrypt($key,$string){

    return  base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $string, MCRYPT_MODE_CBC, md5($key)));
    }
Run Code Online (Sandbox Code Playgroud)

和

fnEncrypt("6abd9b547f8d23b367dff1fc4g7ad457b7f7f85e","AB10|13213123");
Run Code Online (Sandbox Code Playgroud)

我收到了警告信息

警告:mcrypt_encrypt():此算法的密钥大小太大

怎么解决这个?提前致谢

Jon*_*art 8

您的密钥太长,就像警告消息所示.

从5.6.0开始,mcrypt_encrypt:

无效key并且iv不再接受尺寸.mcrypt_encrypt()现在将抛出警告并FALSE在输入无效时返回.以前,键和IV用'\0'字节填充到下一个有效大小.

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

另外,请查看该页面上的示例1.它表明了

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

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