php mcrypt转openssl
由于新版本的php不支持mcrypt,改成支持openssl 所以记一下常用函数的改变
1
mcrypt_get_block_size($this->mcrypt, $this->mode);
改成了
openssl_cipher_iv_length("aes-256-cbc")
//aes-256-cbc是加密算法 openssl_cipher_iv_length("aes-256-cbc")
是一个函数调用,用于获取 AES-256-CBC 加密算法的初始化向量长度。在实际使用中,这个函数会返回一个整数值,表示指定加密算法的初始化向量长度。
2
mcrypt_create_iv
改成了
bin2hex(openssl_random_pseudo_bytes(openssl_cipher_iv_length("aes-256-cbc")));
//openssl_random_pseudo_bytes
用于生成指定长度的伪随机字节序列,长度就是上面获取到的初始化向量长度。注意生成的是二进制文本,要用bin2hex 转成16进制 一般用这个生成iv
3
mcrypt_encrypt($this->mcrypt, $this->key, $str, $this->mode, $this->iv);
改成
if (strlen($str) % 16) {
$str = str_pad($str,strlen($str) + 16 - strlen($str) % 16, "\0");
}
//注意 这个方法会导致原文长度改变 导致文件的哈希值发生改变
openssl_encrypt($str,"aes-256-cbc",$this->key,OPENSSL_NO_PADDING,$this->iv);
//自动填充容易出问题,改成手动填充 第一个值是字符串,第二个值是加密算法,第三个值是密钥,第四个值是加密选项,我这点选项是不自动填充,最后的值是iv
4
mcrypt_decrypt($this->mcrypt, $this->key, $str, $this->mode, $this->iv);
改成
openssl_decrypt($str,"aes-256-cbc", $this->key, OPENSSL_NO_PADDING, $this->iv);
//参数同上
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!