通用RSA加密 - PHP+Java+Javascript加密解密
php端生成 公钥私钥
1、openssl genrsa -out rsa_private_key.pem 1024 私钥
2、openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 公钥
3、openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt 将RSA私钥转换成PKCS8格式(java)

PHP端加密解密
class Index
{ public function index(){
// 私钥解密
$private_key = "-----BEGIN RSA PRIVATE KEY-----
ERCCWwIBAAKBgQC4zGR6jo8bcR19eKxJ2IpOxTjwMVya5Egh2ZTf/lXJmVsoOBwO
ul/g0+fPI2aQ58mICjnxc0vpYz1M5INmcVIgJdOksN13CpTGpTLunD2xcHrE25Cx
5elNbQCPFICRQcnE1zqn8GPySm4EQO2UiHjoTalwfmhfYlS3cNaAcXrZfwIDAQAB
AoGACcmRfMg2Hh70j+OnRFX6pUdex6HlpLJ4e4p5jw96Xa4InO2z1rfaQh8XBOp8
ESqlitX30ajomVjPM1Za+z7/OWuMYV/KehnX9SCKlC9uU9a2zu/oMN+hf2LiqlOy
KWmJRzn1UduDKq6pejac8mltZhFduTFnyxOMtkW8/Qf1TvkCQQDqolU686aC5pQU
cKsOi23rI+5K4s+T4SAum1vKFvsT9ebLiqru+EauZhHDOUH8plQIuV4tiEFEhzjq
XVnwcpolAkEAyaBQ2Wsc/T1uDFGDpRy+nPdtHjQh6NTXvBF5VI3weeQJeCOl6hzQ
IV3OWEyfXsXbYq0PzHz077jbM2g0OeiJ0wJAPDYgTRqNlnX5di1bmEXrlTYJRqph
vn89NPilW3z+PacS7RTOvLh12vdSg5jD+EPuuLZpFqIqrZ1N28bM98lRCQJAKgs2
EMBXQS9oHUV6MBn4XX7y0BOK5qRLgDoclNcsSB6XIug8Fr9/XxXSi3Me4IJdpwvz
eW6tHLftbaDTEyg8ZQJAPy9IuyA8WsHwBtybIxhCppJPGlMojoPyRZ5JWqZskzUB
NQuu5zy2yio29hIILEJ6h46qnBdmEjd/C/fZ9oYjJw==
-----END RSA PRIVATE KEY-----"; // 公钥加密
$public_key = "-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4zGR6jo8bcR19eKxJ2IpOxTjw
MVya5Egh2ZTf/lXJmVsoOBwOul/g0+fPI2aQ58mICjnxc0vpYz1M5INmcVIgJdOk
sN13CpTGpTLunD2xcHrE25Cx5elNbQCPFICRQcnE1zqn8GPySm4EQO2UiHjoTalw
fmhfYlS3cNaAcXrZfwIDAQAB
-----END PUBLIC KEY-----"; // ====Java 私钥===
// -----BEGIN PRIVATE KEY-----
//MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALjMZHqOjxtxHX14
//rEnYik7FOPAxXJrkSCHZlN/+VcmZWyg4HA66X+DT588jZpDnyYgKOfFzS+ljPUzk
//g2ZxUiAl06Sw3XcKlMalMu6cPbFwesTbkLHl6U1tAI8UgJFBycTXOqfwY/JKbgRA
//7ZSIeOhNqXB+aF9iVLdw1oBxetl/AgMBAAECgYAJyZF8yDYeHvSP46dEVfqlR17H
//oeWksnh7inmPD3pdrgic7bPWt9pCHxcE6nwRKqWK1ffRqOiZWM8zVlr7Pv85a4xh
//X8p6Gdf1IIqUL25T1rbO7+gw36F/YuKqU7IpaYlHOfVR24Mqrql6NpzyaW1mEV25
//MWfLE4y2Rbz9B/VO+QJBAOqiVTrzpoLmlBRwqw6Lbesj7kriz5PhIC6bW8oW+xP1
//5suKqu74Rq5mEcM5QfymVAi5Xi2IQUSHOOpdWfBymiUCQQDJoFDZaxz9PW4MUYOl
//HL6c920eNCHo1Ne8EXlUjfB55Al4I6XqHNAhXc5YTJ9exdtirQ/MfPTvuNszaDQ5
//6InTAkA8NiBNGo2Wdfl2LVuYReuVNglGqmG+fz00+KVbfP49pxLtFM68uHXa91KD
//mMP4Q+64tmkWoiqtnU3bxsz3yVEJAkAqCzYQwFdBL2gdRXowGfhdfvLQE4rmpEuA
//OhyU1yxIHpci6DwWv39fFdKLcx7ggl2nC/N5bq0ct+1toNMTKDxlAkA/L0i7IDxa
//wfAG3JsjGEKmkk8aUyiOg/JFnklapmyTNQE1C67nPLbKKjb2EggsQnqHjqqcF2YS
//N38L99n2hiMn
//-----END PRIVATE KEY----- //========加密=======
// $pi_key = openssl_pkey_get_private($private_key);// 可用返回资源id
// $pu_key = openssl_pkey_get_public($public_key);
// $data = '{"ip":"192.168.0.1","domain":"www.baidu.com"}';
// openssl_public_encrypt($data, $encrypted, $pu_key); // 公钥加密
// // 加密后的字符
// var_dump($this->urlsafe_b64encode($encrypted));
// die; //========解密========
// php 加密后的值
//$str = "PXrR2AoSFPdMLis4HWKFbHsIsuAjHZVI8TXfsNvzrEYbafWLvpLm3wa_dqqRJwX2GCmOb2GKo087WCIAUPpZxpJHJ44uQKFEoagUQCyRi3LgCqL7CDPHJHmfEfFgp4hbk04hJ3LVPh4Pz4dOGc4To3OOgQSCIkvytY3fz7Fwv0U";
// js 使用php公钥加密后的值
// q5BaGcWoKFSasuAEXeTTy8PfcaHR4xdlurviK4fAoNT3jMiuN/vAJQVxklcFjqql2bn0i6IxG8DiWMAXm8nVFfTOINp811BLYjsHBymFStrTiEiPekL8txK4z5bl6OFi43FLQT96h8XY8zcJL/UFq/NJShVlg/kWHvVixfZF4NI=
// java 使用PHP生成公钥加密后的值
//O91XUcQV8pu_FqnuXO6qkfB-6tEVJVNdlHOnArEcj71JRq_rIHYkpYrOnEiMfKaXrNbyWISiPX14OkZ5mbK92ux58w8Vv8JLkizZ0QUESaJd974l1YcxiddBpKRcgxVB3Vh7RudchzFta64iiOru9fvGU5Uza4KiOLU9PqD8Z-w
$str = 'O91XUcQV8pu/FqnuXO6qkfB+6tEVJVNdlHOnArEcj71JRq/rIHYkpYrOnEiMfKaXrNbyWISiPX14OkZ5mbK92ux58w8Vv8JLkizZ0QUESaJd974l1YcxiddBpKRcgxVB3Vh7RudchzFta64iiOru9fvGU5Uza4KiOLU9PqD8Z+w=';
$d = $this->urlsafe_b64decode($str);
$pi_key = openssl_pkey_get_private($private_key); // 可用返回资源id
@openssl_private_decrypt($d, $decrypted, $pi_key); // 私钥解密 echo $decrypted;
} //url base64解码
protected function urlsafe_b64decode($string)
{
$data = str_replace(array('-','_'),array('+','/'),$string);
$mod4 = strlen($data) % 4;
if ($mod4) {
$data .= substr('====', $mod4);
}
return base64_decode($data);
} //url base64编码
protected function urlsafe_b64encode($string)
{
$data = base64_encode($string);
$data = str_replace(array('+','/','='),array('-','_',''),$data);
return $data;
}
}
详情可以了解:
https://my.oschina.net/gKWW0kOYB/blog/1836342
附js文件下载:点击
通用RSA加密 - PHP+Java+Javascript加密解密的更多相关文章
- js MD5加密与 java MD5加密不一致
因为该项目会部署到多台机器,所以需要用字符生成唯一的MD5,但是js生成的MD5和java生成的MD5不一致.经过博主查阅资料发现java生成MD5用的是utf-8的编码,而且js用的是2进制.那我就 ...
- JS客户端RSA加密,Java服务端解密
常用语网页客户端对密码加密,在后端java解密还原 java代码依赖 <dependency> <groupId>commons-codec</group ...
- Java 使用blob对H5视频播放进行加密《java视频加密》
1.创建一个H5 <video>标签 <video id="sound" type="video/mp4" controls="co ...
- Java & PHP & Javascript 通用 RSA 加密 解密 (长字符串)
系统与系统的数据交互中,有些敏感数据是不能直接明文传输的,所以在发送数据之前要进行加密,在接收到数据时进行解密处理:然而由于系统与系统之间的开发语言不同. 本次需求是生成二维码是通过java生成,由p ...
- 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密
你真的了解字典(Dictionary)吗? 从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ...
- RSA javascript加密 lua解密
一个在线RSA非对称加密解密,可以用这个地址生成公钥和私钥 https://blog.zhengxianjun.com/online-tool/rsa/ javascript加密 jsencrypt. ...
- RSA,JAVA私钥加密,C#公钥解密
做这个东西在坑里爬了3天才爬出来,记录下供园友参考.C#程序员一枚,项目需要和Java做数据交互,对方甩了段密文和一个CER证书给我,然后我要对其密文进行解密. RSA 非对称加密,对方用私钥加密,我 ...
- RSA 加密算法 Java 公钥加密私钥解密 和 私钥加密公钥解密 的特点
package com.smt.cipher.unsymmetry; import org.apache.commons.codec.binary.Base64; import org.apache. ...
- 安卓、IOS端AEC密钥加密 Java端密钥解密通用实现(16进制表现形式)
由于业务需求,需要实现在客户端对重要信息进行加密,在服务端进行解密.客户端包括IOS和安卓的 服务端位Java. 注意密钥 需要保持一致,可以自己定义 . 安卓端加密代码: ============= ...
随机推荐
- margin塌陷与margin合并(margin),清除浮动
**1.margin塌陷**问题:垂直方向的父子关系的盒子使用不当会产生margin塌陷.给子级设置margin-top时,他不会相对父级一起动,只有他的margin超过父级的margin时,才会生效 ...
- PS教程:抠透明冰块
1.打开我们需要用到的素材,ctrl+a全选,ctrl+c复制 2.接下来给图层添加一个图层蒙版,按alt键点击图层蒙版,看到它变成白色了 3.ctrl+v,把刚才复制好的图粘贴进来 4.接着ctrl ...
- (二)jdk8学习心得之Lambda表达式
二.Lambda表达式 1. 格式 (参数1,参数2,…,参数n)->{方法体} 注意: (参数1,参数2,...,参数n)要与方法接口中的参数一致,但是名字可以不一样. 此外,方法类型接口,有 ...
- qsort.c源码
/* 版权所有(C) 1991-2019 自由软件资金会. 该文件属于是GUN C语言函数库,由Douglas C. Schmidt(schmidt@ics.uci.edu)所写. GUN C语言函数 ...
- Ffmpeg使用
ffmpeg官网 刚开始安装的推荐博客|--利用FFmpeg 开发音视频流:一.二.三 1.分辨率码率 主要视频格式与码率: 分辨率 200p——对应的码率是256kpbs,也就是说,一分钟需要流量1 ...
- SQL SERVER2000将多行查询结果拼接到一行数据及函数的创建
处理前的查询结果如上图: 通过借助SQL变量的定义 ) DECLARE @Num int SET @Scope='' ), ' ' GROUP BY ContractID 实现了一下效果: //创建拼 ...
- Heap Partition ZOJ - 3963(贪心)
ZOJ - 3963 贪心做一下就好了 反正别用memset #include <iostream> #include <cstdio> #include <sstrea ...
- python并发编程之IO阻塞基础知识点
IO模型 解决IO问题的方式方法 问题是:IO操作阻塞程序执行 解决的也仅仅是网络IO操作 一般数据传输经历的两个阶段,如图: IO阻塞模型分类: 阻塞IO 非阻塞IO 多路复用IO 异步IO(爬 ...
- opencontrail—VXLAN模式下数据包的传输过程
在这篇文章中,我们将看到VM生成的数据包如何能够到达另一个VM或外部资源,Neutron使用OpenContrail插件的上下文中的关键概念/组件是什么. 我们将重点介绍OpenContrail,它如 ...
- django集成celery
Celery是一个基于分布式消息传递的开源异步任务队列,在django实际应用场景下,往往有一些较为耗时,但并不需要返回值的任务, 例如发送邮件,更新我们自己的统计数据库,这时我们可以将这些任务交由c ...