php中rsa加密及解密和签名及验签

  加密的内容长度限制为密钥长度少11位,如128位的密钥最多加密的内容为117个长度。

  公钥加密
    $public_content=file_get_contents(公钥路径);
    $public_key=openssl_get_publickey($public_content);
    
    $original_str='待加密的内容';
    $original_arr=str_split($original_str,117);  //折分
    foreach($original_arr as $o)
    {
      $sub_enc=null;
      openssl_public_encrypt($o,$sub_enc,$public_key);
      $original_enc_arr[]=$sub_enc;
    }
    openssl_free_key($public_key);
    $original_enc_str=base64_encode(implode('',$original_enc_arr));//最终网络传的密文
  私钥解密
    $private_content=file_get_contents(私钥路径);
    $private_key=openssl_get_privatekey($private_content);

    $original_enc_str=base64_decode(密文);
    $orig_dec_str='';
    for($i=0;$i<strlen($original_enc_str)/128;$i++)
    {
       $data=substr($original_enc_str,$i*128,128);
       openssl_private_decrypt($data,$decrypt,$private_key);
       $orig_dec_str.=$decrypt;
    }
    $orig_dec_str为最后解密出来的。

  注:私钥加密及公钥解密同理。
-----------------------------------------------------------------------------------------------------------------------
  私钥签名
    $private_content=file_get_contents(私钥路径);
    $private_key=openssl_get_privatekey($private_content);

    $original_str='';//原数据
    openssl_sign($original_str,$sign,$private_key);
    openssl_free_key($private_key);
    $sign=base64_encode($sign);//最终的签名    

  公钥验签
    $public_content=file_get_contents(公钥路径);
    $public_key=openssl_get_publickey($public_content);

    $sign=base64_decode($sign)'';//得到的签名
    $original_str='';得到的数据
    $result=(bool)openssl_verify($original_str,$sign,$public_key);
    openssl_free_key($public_key);
    $result为真时签验通过,假时未通过

    

转载于:https://www.cnblogs.com/bwteacher/p/5757361.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Opencv ---像素坐标转世界坐标(已知外参)

只能求取已知外参的世界坐标平面上的世界坐标&#xff0c;具体公式如图片所示&#xff01; PS&#xff1a;字丑请谅解&#xff01;

最优化5-8章重点(考试点全)

10道题&#xff0c;每道题10分&#xff0c;5-8章大概4题左右&#xff0c;后面的章节主要考的是概念题

多对多关联映射(双向)

关联映射方面的最后一篇了&#xff0c;我觉得映射文件的编写是使用hibernate的基础&#xff0c;而关联映射又是基础的基础&#xff0c;所以这方面分的细一些&#xff0c;罗嗦一些&#xff0c;说明白就好&#xff0c;呵呵。多对多关联(双向)&#xff0c;相对单向&#xff0c;在实…

sort-排座椅

题目描述 Description上课的时候总有一些同学和前后左右的人交头接耳&#xff0c;这是令小学班主任十分头疼的一件事情。不过&#xff0c;班主任小雪发现了一些有趣的现象&#xff0c;当同学们的座次确定下来之后&#xff0c;只有有限的D对同学上课时会交头接耳。同学们在教室中…

JSONModel的基本使用

JSONModel 是一个库,它能智能并且快速的创建出数据 model,你可以在你的 iOS 项目或者 OSX 项目上使用它。 使用前准备 添加 JSONModel 到你的工程中 1、需要的环境: ARC,iOS 5.0 / OSX 10.7 引入框架SystemConfiguration.framework2、获取途径&#xff1a; 1&#xff09;、通过…

图像处理 伽玛校正

http://blog.csdn.net/lichengyu/article/details/20840135 本质上是关于灰度的一个幂函数&#xff0c;当系数gamma大于1时&#xff0c;低灰度值的动态范围减小&#xff0c;高灰度值的动态范围增大&#xff0c;整体的灰度值减小&#xff1b;gamma小于1时则相反&#xff1b; 人…

matlab常用工具箱的调用指令

转自:http://blog.sina.com.cn/s/blog_86186c970102va9g.html Matlab常用工具箱的调用命令 1. 优化工具箱​​ 用途:优化问题 调用命令:在Command Window输入“optimtool”​,其窗口如下 图1 Optimization Tool 2. 神经网络工具箱​ 用途:数据拟合、模式识别和分类…

tomcat起不来的问题已经解决

tomcat 起不来的问题:\apache-tomcat-6.0.10\bin 中startup.bat 起不来&#xff0c;一闪就没了。说明&#xff1a;环境变量没有配置好。解决办法&#xff1a;配置环境变量&#xff1a;JAVA_HOME C:\Program Files\Java\jdk1.6.0_03就可以解决问题了本文转自 yuwenhu 51CTO博客…

js写法【3】

var m[];m[m.length]xx;//相当于push 对Repeat方法提供了8种写法做比较&#xff0c;这一点还是不错的。转载于:https://www.cnblogs.com/baozhu/p/4862242.html

Eclipse设置控制台日志输出位置

1、选择服务器配置 2、设置输出文件路径 转载于:https://www.cnblogs.com/Neil223/p/5759693.html

现代制造工程——第七章(轧制和锻造)

考点基于书本以及PPT的题目 一、轧制 二、锻造

图像边缘梯度的定义

http://blog.csdn.net/u014020344/article/details/50196635

Jquery_JQuery之DataTables强大的表格解决方案

1、DataTables的默认配置 $(document).ready(function() { $(‘#example’).dataTable(); } ); 示例&#xff1a;http://www.guoxk.com/html/DataTables/Zero-configuration.html 2、DataTables的一些基础属性配置 “bPaginate”: true, //翻页功能 “bLengthChange”: true, /…

内存管理1retain和release

Student.h: #import <Foundation/Foundation.h> interface Student : NSObject property int age; //默认会生成一个_age属性 end Student.m: #import "Student.h" implementation Student //synthesize age_age;//xcode4.5中可以不使用synthesise方法&a…

目标检测的图像特征提取之(一)Hog特征提取

Hog特征实质是&#xff1a;梯度的统计信息,即针对边缘作特征提取 意义&#xff1a;目标的表象和形状 转载于zouxy09大神的文章&#xff0c;加上自己些微的理解和应用&#xff01; http://blog.csdn.net/zouxy09/article/details/7929348/ 上述基本讲清楚了&#xff0c;其实…

redis类型[string 、list 、 set 、sorted set 、hash]

1. Keys redis本质上一个key-value db&#xff0c;所以我们首先来看看他的key. 首先key也是字符串类型&#xff0c;但是key中不能包括边界字符&#xff1b;由于key不是binary safe的字符串&#xff0c;所以像"my key"和"mykey\n"这样包含空格和换行的key是…

matlab simulink笔记02——延迟模块delay与单位延迟模块unit delay

延迟模块 单位延迟模块 延迟模块具有复位功能,当满足复位条件时会进行复位操作,即输出的值会恢复到初始值,而单位延迟模块没有复位功能; 延迟模块的步长是可以设置的,而单位延迟模块的步长固定为1,不可以改变

局域网传输速度升级

现在很多单位都建成了企业内部局域网&#xff0c;一般的企业网络大多是使用双 绞线连接网卡的方式来进行通信的。其中双绞线通常采用的都是5类线&#xff0c;传输速率为100MB。而网卡则有一定的区别&#xff0c;很多网卡都是采取 10Mbps/100Mbmps自适应的网卡&#xff0c;即传输…

数据结构--栈 codevs 1107 等价表达式

codevs 1107 等价表达式 2005年NOIP全国联赛提高组 时间限制: 1 s空间限制: 128000 KB题目等级 : 钻石 Diamond题目描述 Description明明进了中学之后&#xff0c;学到了代数表达式。有一天&#xff0c;他碰到一个很麻烦的选择题。这个题目的题干中首先给出了一个代数表达式&am…