位置: 编程技术 - 正文

PHP的openssl加密扩展使用小结(推荐)(php7 openssl)

编辑:rootadmin

推荐整理分享PHP的openssl加密扩展使用小结(推荐)(php7 openssl),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php openssl_encrypt,openssl加密解密,openssl 加密,php openssl_encrypt,php openssl_encrypt,php openssl_decrypt,php openssl_decrypt,php openssl_encrypt,内容如对您有帮助,希望把文章链接给更多的朋友!

引言

互联网的发展史上,安全性一直是开发者们相当重视的一个主题,为了实现数据传输安全,我们需要保证:数据来源(非伪造请求)、数据完整性(没有被人修改过)、数据私密性(密文,无法直接读取)等。虽然现在已经有SSL/TLS协议实现的HTTPS协议,但是因在客户端上依赖浏览器的正确实现,而且效率又很低,所以一般的敏感数据(如交易支付信息等)还是需要我们使用加密方法来手动加密。

虽然对于一般的WEB开发人员来说,大可不必深入了解一些安全相关的底层技术,但学习加密基础知识,使用现有加密相关工具却十分必要。由于工作需要,自己看了些加密相关文章,结合自己的使用经历,完成此文。

加密基础

学习如何使用加密之前,我们需要了解一些加密相关的基础知识。

加密算法一般分为两种:对称加密算法和非对称加密算法。

对称加密

对称加密算法是消息发送者和接收者使用同一个密匙,发送者使用密匙加密了文件,接收者使用同样的密匙解密,获取信息。常见的对称加密算法有:des/aes/3des.

对称加密算法的特点有:速度快,加密前后文件大小变化不大,但是密匙的保管是个大问题,因为消息发送方和接收方任意一方的密匙丢失,都会导致信息传输变得不安全。

非对称加密

与对称加密相对的是非对称加密,非对称加密的核心思想是使用一对相对的密匙,分为公匙和私匙,私匙自己安全保存,而将公匙公开。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。发送数据前只需要使用接收方的公匙加密就行了。常见的非对称加密算法有RSA/DSA:

非对称加密虽然没有密匙保存问题,但其计算量大,加密速度很慢,有时候我们还需要对大块数据进行分块加密。

数字签名

为了保证数据的完整性,还需要通过散列函数计算得到一个散列值,这个散列值被称为数字签名。其特点有:

&#;无论原始数据是多大,结果的长度相同的;&#;输入一样,输出也相同;&#;对输入的微小改变,会使结果产生很大的变化;&#;加密过程不可逆,无法通过散列值得到原来的数据;

常见的数字签名算法有md5,hash1等算法。

PHP的openssl扩展

openssl扩展使用openssl加密扩展包,封装了多个用于加密解密相关的PHP函数,极大地方便了对数据的加密解密。 常用的函数有:

PHP的openssl加密扩展使用小结(推荐)(php7 openssl)

对称加密相关:

string openssl_encrypt ( string $data , string $method , string $password)

其中$data为其要加密的数据,$method是加密要使用的方法,$password是要使用的密匙,函数返回加密后的数据;

其中$method列表可以使用openssl_get_cipher_methods()来获取,我们选取其中一个使用,$method列表形如:

其解密函数为 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则表示错误;

加密实例

以下是一个非对称加密使用的小例子:

而对称加密就非常简单了,直接使用ssl_encrypt()函数即可;

当然一些接口可能会对加密方法进行不同的要求,如不同的padding,加密块大小等等,这些就需要使用者自己调整了。

因为我们是在HTTP协议之上处理的数据,所以数据加密完成后,就可以直接发送了,不用再考虑底层的传输,使用cURL或SOAP扩展方法,就可以直接请求接口啦。

结语

密码学是一个十分高深的学科,它理论艰深,概念繁多,作为一个WEB开发人员,虽然不需要我们去研究其底层实现,但是学会使用封装好的方法很有利于我们开发。甚至了解其基本实现,也可以触类旁通,对算法等有新的理解。

以上这篇PHP的openssl加密扩展使用小结(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持积木网。

php 实现重定向跳转实例代码 在php中重定向实现方法很简单我们只要简单的利用header发送状态代码,然后再用header进行跳转,效果与apache,iis,nginx都是一样的效果哦。一:更推荐这

Yii2.0表关联查询实例分析 本文实例讲述了Yii2.0表关联查询的方法。分享给大家供大家参考,具体如下:你可以使用ActiveRecord来进行关联查询(比如,从A表读取数据时把关联的B表

浅谈PHP正则中的捕获组与非捕获组 今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PH

标签: php7 openssl

本文链接地址:https://www.jiuchutong.com/biancheng/301213.html 转载请保留说明!

上一篇:PHP多进程编程总结(推荐)(php多进程处理大数据)

下一篇:php 实现301重定向跳转实例代码(php 重写 重载)

  • 增值税10000交多少税
  • 售卖会卡,达标返现,怎么进行账务处理
  • 汇票委托书会计分录
  • 职工年平均工资是什么意思
  • 金税盘处于报税期是什么意思
  • 专票当月认证后什么时候抵扣
  • 扣缴义务人是否可以领税务发票,是否可以正常申报
  • 分类账和明细账平行登记规则
  • 房产税按原值计算公式
  • 年金的几种类型
  • 手工帐怎么登记
  • 预收账款确认收入会计分录
  • 网上购物退款后又收到产品了怎么办
  • 产品成本科目包括
  • 事业单位乱报销出纳怎么办?
  • 收取线路维护费合法吗
  • 未达起征点纳税申报表怎么填
  • 代扣代缴个人所得税手续费是否缴纳增值税
  • 企业出租屋顶不需要缴税!
  • 坏账损失怎么核算
  • 分红转增股本什么意思
  • 收到的税收返还包括
  • 公司注销后款未收完怎么办
  • 公司没有残疾人要交残疾人保障金吗
  • 自用煤怎么入账
  • 预计负债的计量,如何确定最佳估计数
  • 公司财务账目不符怎么办
  • 享受即征即退政策有效期到了还有效吗
  • php封装composer包
  • 现金流量套期的例子
  • php 模拟post
  • phppost带cookie提交
  • 购货折让会计分录
  • 建设项目的设计阶段分为
  • 异地银行结算账户的特点
  • 公交车停车场收费吗
  • 开发商没交税
  • 理财收益如何计税
  • 带你看看房间英语怎么写
  • 企业发生的利得或损失应计入企业的营业外收支
  • 百旺金赋开票系统客服电话
  • 残保金的计费依据
  • 劳动法中迟到半小时扣多少钱
  • 一般纳税人企业所得税如何计算
  • 留抵退税税务总局规定的其他情形
  • 小规模纳税人在什么情况下会成为一般纳税人
  • mongodb怎么用
  • python logger
  • 包装就是包装物
  • 应收代位追偿款会计分录
  • 预付款已经开了发票未到货要怎么做账
  • 开具红字发票的当月就要进项税额转出吗?
  • 工伤 保险赔付
  • 美国支票名字不一致
  • 公司向股东借款多久必须归还
  • 被遗忘的事件
  • mysql tmp_table_size和max_heap_table_size大小配置
  • mac怎么一键关机
  • windows防火墙无法更改某些设置错误代码0×80070422
  • MSAPI.DAT,WINDNSAPI.DAT是什么文件
  • xp直升win7
  • ubuntu如何安装wps
  • w10系统有什么好处
  • win10预览版21301bug
  • js正则表达式gi
  • shell脚本语句
  • Scrapy框架可以用于数据挖掘、监测和自动化测试
  • 学习计划表模板
  • node.js 核心http模块,起一个服务器,返回一个页面的实例
  • jquery返回顶部代码
  • 原生js实现promise.all
  • 国家税务局通用手工发票
  • 深圳罗湖区公安局长安慧君简历
  • 青岛税务局局长是什么级别?
  • 社保申报每月几号申报
  • 新疆喀什泽普县海拔高度是多少米
  • 国税地税发票编码查询
  • 浙江省网上税务局总分机构变更流程
  • 北京市地税总局电话
  • 中华人民共和国道路交通安全法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设