php openssl_encrypt(php openssl_decrypt)

发布时间:2024-05-08
本文主要介绍php openssl _ encrypt,下面一起看看php openssl _ encrypt相关资讯。
介绍互联网发展史,安全一直是开发者非常重视的话题。为了实现数据传输的安全性,我们需要保证数据源的完整性(非伪造请求)和数据的完整性(无修改)以及数据的私密性(密文,无法直接读取)。虽然https协议是通过ssl/tls协议实现的,但是由于浏览器是在客户端正确实现的,效率很低,一般的敏感数据,比如交易支付信息,都需要使用加密方法手动加密。虽然普通的web开发人员没有必要了解一些基本的安全相关技术,但是学习加密的基础知识,使用现有的加密相关工具是非常必要的。由于工作需要,看了一些关于加密的相关文章,结合自己的经验完成了这篇文章。在学习如何使用加密之前,我们需要了解一些与加密相关的基础知识。加密算法一般分为两类:对称加密算法和非对称加密算法。对称加密对称加密算法,消息发送方和接收方使用同一个密钥,发送方加密文件的密钥,接收方使用同一个密钥解密得到信息。常见的对称加密算法有des和aes/3des。对称加密算法的特点是加密速度快,加密前后文件大小变化不大,但密钥的保密性是个大问题,因为消息发送方和接收方的密钥丢失会导致信息传输不安全。不对称加密不对称加密是相对于对称加密而言的。非对称加密的核心思想是使用一对相对密钥,可分为公钥和私钥。私钥安全保管,公钥公开,公钥和私钥是一对。如果我们用公钥加密数据,我们可以用相应的私钥解密。如果我们使用私钥来加密数据,我们只能使用相应的公钥来解密。在发送数据之前,我们只需要用接收方的公钥对其进行加密。一般的非对称加密算法有rsa/dsa:非对称加密没有密钥问题,但是计算量大,加密速度慢,有时需要加密大量数据。数字签名为了保证数据的完整性,哈希函数也需要哈希值来计算,这就是所谓的数字签名:无论原始数据有多大,结果的长度都是一样的。输入相同,输出也相同。输入中的一个小变化会对结果产生很大的影响。加密过程不可逆,原始数据无法用哈希值表示。常见的数字签名算法有md5、hash1等。php的openssl扩展openssl扩展了openssl加密扩展包,封装了几个php函数进行加密和解密,解密和解密了很多数据:对称加密相关:string(字符串数据,openssl_encrypt string的方法,string的密码)其中$ data是要加密的数据,$ method是加密方法,密码是使用的密钥,函数返回加密的数据。这个方法可以使用美元列表openssl_get_cipher_methods,我们选择其中一个来使用,和美元列表方法相同:(数组0 = aes-128-cbc/aes加密1 = des加密2 = des-ede3/3des加密...)解密函数字符串(字符串数据,openssl_encrypt字符串的方法,字符串的密码)非对称加密相关:openssl _ get _ public key(openssl _ pkey _ get _ public);;//来自公钥的证书;openssl _ get _ private key(openssl _ pkey _ get _ private);;//来自证书的私钥;都需要传入证书文件(一般是. pem文件);openssl _ public _ encrypt(string data,string encryption,mixed key {int usd,usd _ pkcs1 padding = openssl _ padding })用公钥加密数据,公钥加密数据用于数据加密;美元是参考变量,加密的数据会放入这个变量;密钥是输入数据的公钥;因为加密的数据包可能不仅加密大部分比特,还需要填充(填充usd/usd可选填充),openssl_pkcs1_padding、openssl_no_padding、pkcs # 1分别填充或不填充使用;与此方法相反(传递的参数一致):(openssl _ private _ encrypt);//用私钥加密;(openssl _ private _ decrypt);//使用私钥解密;(openssl _ private _ decrypt);//用公钥解密;还有签名和校验函数:布尔型openssl_sign(字符串数据,字符串签名,混合priv_key_id usd {,混合签名_alg = openssl_al_sha1 usd})国际openssl_verify(字符串数据,字符串签名,混合pub_key_id usd {,混合签名_ alg = openssl})。$ signature签名的结果;用于签名priv_key_id美元的私钥;signature_alg usd是用于签名的算法,其算法列表可以通过openssl_get_md_methods找到。(数组0 = md5,1 = sha1,2 = sha256,…)校验函数:与签名函数相比,只导入私钥对应的公钥。所以签名验证的结果是1,0失败,1错误。加密示例下面是一个使用非对称加密的小示例:获取公钥pub _ key usd = openssl _ get _ public k测试。pem);加密=;块加密为($ offset = 0,length = strlen(raw _ msg usd usd usd offset);长度;offset key _ size usd){ encrypted block usd =;data = substr(raw_msg usd usd usd,offset,key_size) if(!openssl_public_encrypt($ data,encryptedblock,pub_key,openssl _ pkcs1 _ padding)){ return ; ;{ person } encrypted block usd usd =;}返回$ encryption用对称加密很简单,直接使用ssl_encrypt函数。当然,有些接口可能对加密方法有不同的要求,比如不同的填充、块大小等。,这需要用户自己调整。因为我们是在http协议上处理数据,数据加密已经完成,可以直接发送,不考虑底层传输。curl或soap扩展方法可以直接请求接口。postscript密码学是一门很深奥的学科,理论难度很大。作为一个web开发人员,我们没有必要去研究底层的实现,但是学习如何使用封装的方法对我们的开发是非常有益的。即使知道基本实现,光是算法就能有新的认识。上面php的openssl加密扩展就是一个总结。有件事我可以和你分享。我们希望给你一个参考,也希望你能支持。
了解更多php openssl _ encrypt相关内容请关注本站点。
上一个:南方黑木耳袋料种植技术
下一个:厚声0402WGF9104TCE电阻

单干桂花的正确栽培技术
什么是封箱胶带的持粘性?要怎么检测?
大豆蛋白肽干燥塔的常见问题及成因
反渗透纯水机到底对身体好不好?
弹性座封闸阀使用范围亦日渐扩大
普洱茶出处
确定一体化泵站中的水泵的流浪和扬程的方法
云南昆明矿机厂铅锌矿浮选设备及铅锌氧化矿、铅锌硫化矿选矿技术综述(2
常饮天目湖白茶能健身
糖柱对糖的分离顺序原理