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

Php 警告:mcrypt_encrypt():此算法的密钥大小太大,php,Php,和 function fnEncrypt($key,$string){ return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $string, MCRYPT_MODE_CBC, md5($key))); } 我收到了类似的警告信息 警告:mcrypt_encrypt():此算法的密钥大小太大 如何解决这个问题?提前感谢您的钥匙太长,正如警告信息所示 自5.6.0起: 无效的键和iv尺寸不再被接受mcry

function fnEncrypt($key,$string){

    return  base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $string, MCRYPT_MODE_CBC, md5($key)));
    }
我收到了类似的警告信息

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


如何解决这个问题?提前感谢

您的钥匙太长,正如警告信息所示

自5.6.0起:

无效的
iv
尺寸不再被接受<如果输入无效,code>mcrypt_encrypt()现在将抛出警告并返回
FALSE
。以前,键和IVs用
'\0'
字节填充到下一个有效大小

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

另外,请看该页上的。它表明

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

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

fnEncrypt("6abd9b547f8d23b367dff1fc4g7ad457b7f7f85e","AB10|13213123");