PHP下SSL加密解密、验证、签名方法(很简单)_php技巧

超级简单,依赖于OpenSSL扩展,这里就不多废话了,直接奉上代码

签名:

function sign($data) {
 //读取私钥文件
 $priKey = file_get_contents('key/rsa_private_key.pem');

 //转换为openssl密钥,必须是没有经过pkcs8转换的私钥
 $res = openssl_get_privatekey($priKey);

 //调用openssl内置签名方法,生成签名$sign
 openssl_sign($data, $sign, $res);

 //释放资源
 openssl_free_key($res);

 return $sign;
}

验证:

function verify($data, $sign) {
 //读取支付宝公钥文件
 $pubKey = file_get_contents('key/alipay_public_key.pem');

 //转换为openssl格式密钥
 $res = openssl_get_publickey($pubKey);

 //调用openssl内置方法验签,返回bool值
 $result = (bool)openssl_verify($data, $sign, $res);

 //释放资源
 openssl_free_key($res);

 return $result;

解密

function decrypt($content) {

 //读取商户私钥
 $priKey = file_get_contents('key/rsa_private_key.pem');

 //转换为openssl密钥,必须是没有经过pkcs8转换的私钥
 $res = openssl_get_privatekey($priKey);

 //声明明文字符串变量
 $result = '';

 //循环按照128位解密
 for($i = 0; $i < strlen($content)/128; $i++ ) {
  $data = substr($content, $i * 128, 128);

 //拆分开长度为128的字符串片段通过私钥进行解密,返回$decrypt解析后的明文
  openssl_private_decrypt($data, $decrypt, $res);

 //明文片段拼接
  $result .= $decrypt;
 }

 //释放资源
 openssl_free_key($res);

 //返回明文
 return $result;
}

希望本文所述对大家学习php程序设计有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php
, 验证
, ssl
, 签名
加密解密
ssl php 加密解密、ssl加密解密、sm2加密解密签名算法、加密解密 签名、ssl解密,以便于您获取更多的相关知识。

时间: 2024-09-17 04:41:09

PHP下SSL加密解密、验证、签名方法(很简单)_php技巧的相关文章

使用HMAC-SHA1签名方法详解_php技巧

加密算法:使用HMAC-SHA1签名方法 复制代码 代码如下:     /**     * @brief 使用HMAC-SHA1算法生成oauth_signature签名值     *     * @param $key  密钥     * @param $str  源串     *     * @return 签名值     */    function getSignature($str, $key) {        $signature = "";        if (fun

经典PHP加密解密函数Authcode()修复版代码_php技巧

Authcode这个函数很多人都使用,这函数来自Discuz程序,用于加密解密字符串,可以设置钥匙(key)和过期时间,在很多时候都用得着.原版的函数代码可能会生成+./.&这样的字符,导致通过URL传值取回时被转义,导致无法解密.火端网络稍加修改,把这几个字符替换成其它字符,解密时再替换回去,这样就完美了! 代码如下: function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0){ if($operation

python下RSA 加密/解密,签名/验证

基于win7 + python3.4   原文是py2环境,而我的环境是py3,所以对原代码做了修改:decode(), encode() import rsa # 生成密钥 (pubkey, privkey) = rsa.newkeys(1024) # 保存密钥 with open('public.pem','w+') as f: f.write(pubkey.save_pkcs1().decode()) with open('private.pem','w+') as f: f.write(

在yii中新增一个用户验证的方法详解_php技巧

1.为什么要新增一个用户验证:因为我要将网站后台和前台做在同一个yii的应用中.但是前台也包含有会员的管理中心.而这两个用户验证是完全不同的,所以需要两个不同登陆页面,要将用户信息保存在不同的cookie或session中.所以需要在一个应用中增加一个用户验证2.yii的用户验证:在自定义用户验证前,我们首先要弄清楚yii的验证和授权方式.为了验证一个用户,我们需要定义一个有验证逻辑的验证类.在yii中这个类需要实现IUserIdentity接口,不同的类就可以实现不同的验证方 法.网站登陆一般

编写php应用程序实现摘要式身份验证的方法详解_php技巧

通基本身份认证一样,也可以使用PHP网页处理HTTP请求报头字段来匹配摘要式身份验证信息.例如下边的代码使用header()函数要求客户端使用Digest验证,它在HTTP消息报头中增加了一个WWW-Authenticate字段:header('WWW-Authenticate:Digest Realm="MyRealm",nonce="47alf7cf25ce7",algorithm=MD5,qop="auth"');-------------

iOS在RSA加密解密和签名的时候已经生成密钥、摘要和密文。向服务器请求为何后台没有反应

问题描述 iOS在RSA加密解密和签名的时候已经生成密钥.摘要和密文.向服务器请求为何后台没有反应 是RSA加密签名这里的问题吗 解决方案 先要看后台有没有收到数据,然后就是后台是否正确处理

json对象转为字符串,当做参数传递时加密解密的实现方法_javascript技巧

[son对象  字符串 互相转行] 比如我有两个变量,我要将a转换成字符串,将b转换成JSON对象: var a={"name":"tom","sex":"男","age":"24"}; var b='{"name":"Mike","sex":"女","age":"29"

详解.Net下的加密解密算法(6) 玩转非对称加密

本博文来聊聊怎么玩转非对称加密吧,这里主要介绍.NET算法下的3种非对称加密算法:DSA,RSA,ECDsa.上两篇博文分 别为Hash家族和非对称加密家族找到了lead,现在我们就为非对称加密技术找个合适的lead吧. 首先创建一个接口 :"IEncryptAndDecrypt",然后为上面的3中算法分别创建3个实现类并让这些类实现接口"IEncryptAndDecrypt".它们 的情况如下图: 这下我们把这些哥们都召集起来了,现在我们就给他们找一个lead:&

&amp;#106avascript加密解密7种方法

加密|解密    本文一共介绍了七种JAVASCRIPT加密方法 在做网页时其实是网页木马呵呵最让人烦恼的是自己辛辛苦苦写出来的客户端IE运行的JAVASCRIPT代码常常被别人轻易的拷贝实在让自己的心里有点不是滋味要知道自己写点东西也挺累的......^*^ 但我们也应该清楚地认识到因为JAVASCRIPT代码是在IE中解释执行要想绝对的保密是不可能的我们要做的就是尽可能的增大拷贝者复制的难度让他知难而退但愿~!~下面我结合自己这几年来的实践及个人研究的心得和大家一起来探讨一下网页中JAVAS