php中rsa加密及解密和签名及验签
加密的内容长度限制为密钥长度少位,如位的密钥最多加密的内容为个长度。
公钥加密
$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为真时签验通过,假时未通过
php中rsa加密及解密和签名及验签的更多相关文章
- RSA加密、解密、签名、验签的原理及方法
一.RSA加密简介 RSA加密是一种非对称加密.可以在不直接传递密钥的情况下,完成解密.这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险.是由一对密钥来进行加解密的过程,分别称为公钥和私 ...
- php rsa 加密、解密、签名、验签
由于对接第三方机构使用的是Java版本的rsa加解密方法,所有刚开始在网上搜到很多PHP版本的rsa加解密,但是对接java大多都不适用. 以下php版本是适用于对接java接口,java适用密钥再p ...
- 密码基础知识(2)以RSA为例说明加密、解密、签名、验签
密码基础知识(1)https://www.cnblogs.com/xdyixia/p/11528572.html 一.RSA加密简介 RSA加密是一种非对称加密.是由一对密钥来进行加解密的过程,分别称 ...
- python RSA加密、解密、签名
python RSA加密.解密.签名 python中用于RSA加解密的库有好久个,本文主要讲解rsa.M2Crypto.Crypto这三个库对于RSA加密.解密.签名.验签的知识点. 知识基础 加密是 ...
- C#实现RSA加密与解密、签名与认证(转)
一.RSA简介 RSA公钥加密算法是1977年由Ron Rivest.Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的.RSA取名来自开发他们三者的名字.RSA是目前最有影响力 ...
- C#实现RSA加密与解密、签名与认证
一.RSA简介 RSA公钥加密算法是1977年由Ron Rivest.Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的.RSA取名来自开发他们三者的名字.RSA是目前最有影响力 ...
- .NET RSA解密、签名、验签
using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Sec ...
- RSA加密、解密、签名、校验签名
先说下RSA概率: 公钥和私钥是通过本地openssl软件生成. 正常: 公钥加密=>私钥解密: 私钥签名=>公钥校验签名 最近做一个项目,对方用java公钥去校验签名,这边java的De ...
- RSA公钥、私钥、签名和验签
1 RSA加密算法介绍 RSA又叫非对称加密算法,这类加密算法有一对秘钥,其中一个用来加密一个用来解密.这一对秘钥中你可以选择一个作为私钥(自己保存),另一个作为公钥(对外公开).用私钥加密的内容只能 ...
随机推荐
- 用JAVA写一个日历计划
效果图(自己需要在前台加css修饰)
- POJ 2838 单调队列
Sliding Window Time Limit: 12000MS Memory Limit: 65536K Total Submissions: 55309 Accepted: 15911 ...
- ASP.NET发布后,功能不响应
题记:稀奇古怪的错误,往往是由低级脑残错误产生的 ASP.NET网站,本地调试一切正常.部署到服务器后,结果登陆按钮就卡住了,点击就是没反应. 浏览器显示Internal Server Error 5 ...
- Plugins
Plugins AdminLTE makes use of the following plugins. For documentation, updates or license informati ...
- sql 日期格式化
sql语句中 经常操作操作datetime类型数据.今天在写一个存储过程的时候需要将 一个datetime的值的 日期部分提取出来.网上有许多这方面的介绍. 主要方法还是通过日期格式的转换来获取.如下 ...
- 安装wampserver之后,浏览器中输入localhost页面显示IIS7解决办法
1.wampserver图标为绿色才为正常启动,如果为橘色说明端口(默认为80)被占用:可以点击图标,然后点Apache->Service->测试80端口,来验证端口是否被占用. 如果占用 ...
- 杭电ACM 1196
#include<stdio.h>int main(){ int num,j,k,s,f; int a[7]={0,0,0,0,0,0,0}; while(scanf("%d&q ...
- IOS第15天(2,事件处理hitTest练习)
***hitTest 获取最合适的点 @implementation HMGreenView - (void)touchesBegan:(NSSet *)touches withEvent:(UIEv ...
- 【iCore3 双核心板_FPGA】例程十三:FSMC总线通信实验——复用地址模式
实验指导书及代码包下载: http://pan.baidu.com/s/1nuYpI8x iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- POJ 1986 Distance Queries(Tarjan离线法求LCA)
Distance Queries Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 12846 Accepted: 4552 ...