function fnEncrypt($key,$string){
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $string, MCRYPT_MODE_CBC, md5($key)));
}
和
fnEncrypt("6abd9b547f8d23b367dff1fc4g7ad457b7f7f85e","AB10|13213123");
我收到警告信息
警告:mcrypt_encrypt():此算法的密钥大小太大
如何解决这个问题?提前致谢
答案 0 :(得分:8)
您的密钥太长,就像警告信息所示。
从5.6.0开始,mcrypt_encrypt
:
不再接受无效的
key
和iv
尺寸。如果输入无效,mcrypt_encrypt()
现在会发出警告并返回FALSE
。以前,密钥和IV用'\0'
个字节填充到下一个有效大小。
AES-256的密钥大小为32字节;你的字符串长度为40个字符。
另外,请查看该页面上的Example 1。它表明
密钥应该是随机二进制,使用scrypt,bcrypt或PBKDF2将字符串转换为密钥
这意味着,不要直接使用字符串作为键(就像你正在做的那样)。密钥派生函数不仅更安全,而且允许您使用任意长度的密码,同时生成正确的密钥长度。