php常见加密方法(PHP实现的AES 128位加密算法示例)
类别:编程学习 浏览量:2980
时间:2021-10-27 10:13:32 php常见加密方法
PHP实现的AES 128位加密算法示例本文实例讲述了PHP实现的AES 128位加密算法。分享给大家供大家参考,具体如下:
|
/* 加密算法一般分为两种:对称加密算法和非对称加密算法。 对称加密 对称加密算法是消息发送者和接收者使用同一个密匙,发送者使用密匙加密了文件, 接收者使用同样的密匙解密,获取信息。常见的对称加密算法有:des/aes/3des. 对称加密算法的特点有:速度快,加密前后文件大小变化不大,但是密匙的保管是个大问题 ,因为消息发送方和接收方任意一方的密匙丢失,都会导致信息传输变得不安全。 非对称加密 与对称加密相对的是非对称加密,非对称加密的核心思想是使用一对相对的密匙 分为公匙和私匙,私匙自己安全保存,而将公匙公开。公钥与私钥是一对,如果用公钥对数据进行加密, 只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密发送数据前只需要使用接收方的公匙加密就行了。 常见的非对称加密算法有RSA/DSA:非对称加密虽然没有密匙保存问题,但其计算量大,加密速度很慢,有时候我们还需要对大块数据进行分块加密。 数字签名 为了保证数据的完整性,还需要通过散列函数计算得到一个散列值,这个散列值被称为数字签名。其特点有: 无论原始数据是多大,结果的长度相同的; 输入一样,输出也相同; 对输入的微小改变,会使结果产生很大的变化; 加密过程不可逆,无法通过散列值得到原来的数据; 常见的数字签名算法有md5,hash1等算法。 PHP的openssl扩展 openssl扩展使用openssl加密扩展包,封装了多个用于加密解密相关的PHP函数,极大地方便了对数据的加密解密。 常用的函数有: 对称加密相关: string openssl_encrypt ( string $data , string $method , string $password) 其中$data为其要加密的数据,$method是加密要使用的方法,$password是要使用的密匙,函数返回加密后的数据; 其中$method列表可以使用openssl_get_cipher_methods()来获取 其解密函数为 string openssl_encrypt ( string $data , string $method , string $password) 非对称加密相关: 它们都只需要传入证书文件(一般是.pem文件); 使用公匙加密数据,其中$data是要加密的数据;$crypted是一个引用变量,加密后的数据会被放入这个变量中;$key是要传入的公匙数据; 由于被加密数据分组时,有可能不会正好为加密位数bit的整数倍,所以需要$padding(填充补齐), $padding的可选项有 OPENSSL_PKCS1_PADDING, OPENSSL_NO_PADDING,分别为PKCS1填充,或不使用填充; 签名函数:$data为要签名的数据;$signature为签名结果的引用变量;$priv_key_id为签名所使用的私匙;$signature_alg为签名要使用的算法 ,其算法列表可以使用openssl_get_md_methods()得到 验签函数:与签名函数相对,只不过它要传入与私匙对应的公匙;其结果为签名验证结果,1为成功,0为失败,-1则表示错误; * */ /* * 基于百度云API的例子 * 密码一律采用AES 128位加密算法进行加密,用SK的前16位作为密钥, * 加密后生成的二进制字节流需要转成十六进制,并以字符串的形式传到服务端 * */ function aes128WithFirst16Char( $adminPass , $secretAccessKey ) { $adminPass = pkcs5Pad( $adminPass ); //把key值截取成16位的 $secretAccessKey = substr ( $secretAccessKey , 0, 16); //进行AES加密 $crypted = openssl_encrypt( $adminPass , 'AES-128-ECB' , $secretAccessKey , OPENSSL_RAW_DATA); //把字符串转换为16进制 return bin2hex( substr ( $crypted , 0, 16)); } //把密码填充成16位 function pkcs5Pad( $adminPass ) { $pad = 16 - ( strlen ( $adminPass ) % 16); return $adminPass . str_repeat ( chr ( $pad ), $pad ); } echo aes128WithFirst16Char( '加密的密码' , 'key值' ); |
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://blog.csdn.net/Drug_/article/details/78721433
您可能感兴趣
- php抽象入门教程(php抽象方法和普通方法的区别点总结)
- 如何用wampserver打开自己写的php(WampServer下安装多个版本的PHP、mysql、apache图文教程)
- php获取post请求来源域名(在PHP中实现使用Guzzle执行POST和GET请求)
- php和java联系(PHP实现与java 通信的插件使用教程)
- php 上传图片如何压缩(PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例)
- php获取网页内容的几种方法(PHP实现的文件浏览器功能简单示例)
- php怎么弄不重复字符串(PHP中将一个字符串部分字符用星号*替代隐藏的实现代码)
- thinkphp微信开发教程(微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解)
- php运行环境的搭建方法(php集成开发环境详解)
- php读取txt乱码怎么办(解决php写入数据库乱码的问题)
- php符串使用教程学习(PHP实现支持CURL字符串证书传输的方法)
- python微信红包代码(php生成微信红包数组的方法)
- php中如何打开文件读文件(PHP通过文件保存和更新信息的方法分析)
- thinkphp支付宝支付(thinkPHP和onethink微信支付插件分享)
- php扩展库使用教程(php使用pecl方式安装扩展操作示例)
- php读取远程的txt文件(php 根据URL下载远程图片、压缩包、pdf等文件到本地)
- 董元奔吟咏历代文人 1012新旧均可 全椒人张璪 1022 -1093(董元奔吟咏历代文人)
- 泪目 这位 刷屏 的英雄,是全椒人的骄傲(泪目这位刷屏)
- 人从众 火炎焱 全椒再现 正月十六走太平 的魅力(人从众火炎焱全椒再现)
- 官宣 全椒籍明星许海峰 奚秀兰 方芳 王璐瑶携手回家 走太平(全椒籍明星许海峰)
- 以前全椒人是怎么过冬的 满满都是回忆(以前全椒人是怎么过冬的)
- NVIDIA显卡份额冲上88 A饭发愁 游戏优化恐没A卡份了(NVIDIA显卡份额冲上88A饭发愁)
热门推荐
- vs中目标平台x86,x64,any cpu的区别
- dedecms获取子目录(详解dedecms利用[field:arcurl/]无法获取文章路径的解决方法)
- WebStorm前端开发工具
- vmware使用教程win10(VMware Workstation安装并安装WIN10操作系统连接外网步骤指导超详细教程)
- 如何判断数据是json还是字符串(JSON.stringify的多种用法总结)
- aspwebserver怎么操作(EasyWebServer怎么用?EasyWebServer网站服务器软件使用教程)
- window.open的用法
- docker运行tomcat服务(使用 docker部署tomcat并接入skywalking的使用)
- mysql密码找回方法(MySQL8忘记密码的快速解决方法)
- docker的解剖(再见 Docker如何5分钟转型 containerd)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9