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加密解密的更多相关文章

  1. js MD5加密与 java MD5加密不一致

    因为该项目会部署到多台机器,所以需要用字符生成唯一的MD5,但是js生成的MD5和java生成的MD5不一致.经过博主查阅资料发现java生成MD5用的是utf-8的编码,而且js用的是2进制.那我就 ...

  2. JS客户端RSA加密,Java服务端解密

    常用语网页客户端对密码加密,在后端java解密还原 java代码依赖    <dependency>      <groupId>commons-codec</group ...

  3. Java 使用blob对H5视频播放进行加密《java视频加密》

    1.创建一个H5 <video>标签 <video id="sound" type="video/mp4" controls="co ...

  4. Java & PHP & Javascript 通用 RSA 加密 解密 (长字符串)

    系统与系统的数据交互中,有些敏感数据是不能直接明文传输的,所以在发送数据之前要进行加密,在接收到数据时进行解密处理:然而由于系统与系统之间的开发语言不同. 本次需求是生成二维码是通过java生成,由p ...

  5. 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密

    你真的了解字典(Dictionary)吗?   从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ...

  6. RSA javascript加密 lua解密

    一个在线RSA非对称加密解密,可以用这个地址生成公钥和私钥 https://blog.zhengxianjun.com/online-tool/rsa/ javascript加密 jsencrypt. ...

  7. RSA,JAVA私钥加密,C#公钥解密

    做这个东西在坑里爬了3天才爬出来,记录下供园友参考.C#程序员一枚,项目需要和Java做数据交互,对方甩了段密文和一个CER证书给我,然后我要对其密文进行解密. RSA 非对称加密,对方用私钥加密,我 ...

  8. RSA 加密算法 Java 公钥加密私钥解密 和 私钥加密公钥解密 的特点

    package com.smt.cipher.unsymmetry; import org.apache.commons.codec.binary.Base64; import org.apache. ...

  9. 安卓、IOS端AEC密钥加密 Java端密钥解密通用实现(16进制表现形式)

    由于业务需求,需要实现在客户端对重要信息进行加密,在服务端进行解密.客户端包括IOS和安卓的 服务端位Java. 注意密钥 需要保持一致,可以自己定义 . 安卓端加密代码: ============= ...

随机推荐

  1. EntityFramework Core 2.1重新梳理系列属性映射(一)

    前言 满血复活啦,大概有三个月的时间没更新博客了,关于EF Core最新进展这三个月也没怎么去看,不知现阶段有何变化没,本文将以EF Core 2.1稳定版本作为重新梳理系列,希望对看本文的你有所帮助 ...

  2. ValueError: too many values to unpack

    Error msg: 执行: python manage,py makemigrations 报错:Value: too many values to unpack 问题: django第一次数据库迁 ...

  3. jQuery手机端点击弹出分享按钮代码

    一.HTML代码如下: <span onClick="toshare()" style="border:dotted 1px #ddd;display:block; ...

  4. java基础-jdk工具包

    1. 标准工具 这些工具都是JDK提供的,通常都是长期支持的工具,JDK承诺这些工具比较好用.不同系统.不同版本之间可能会有差异,但是不会突然就有一个工具消失. 1.1 基础包 (extcheck, ...

  5. 获取url参数值(可解码中文值)

    /** * 根据指定参数名称获取参数值 * @param {String} urlStr 参数名称 * @return {Object} 参数值 * */ getUrlParams = functio ...

  6. .Net上传图片的一些问题

    1.IIS上传文件大小限制和上传时间限制 异常详细信息: System.Web.HttpException: 超过了最大请求长度 打开iis找到部署的网站的配置编辑器 2.设置上传时间限制 3.设置上 ...

  7. codeforces8A

    Train and Peter CodeForces - 8A Peter likes to travel by train. He likes it so much that on the trai ...

  8. 触发器SQL

    CREATE TRIGGER FUEL.HDGJcoaldayexpend1_insertTRIGGER AFTER INSERT ON FUEL.coaldayexpend1 REFERENCING ...

  9. Re.多项式求逆

    前言 emmm暂无 多项式求逆目的 顾名思义 就是求出一个多项式的摸xn时的逆 给定一个多项式F(x),请求出一个多项式G(x),满足F(x)∗G(x)≡1(modxn),系数对998244353取模 ...

  10. CentOS 常用Linux命令

    防火墙 开放端口 firewall-cmd --zone=public --add-port=80/tcp --permanent    (--permanent永久生效,没有此参数重启后失效) 重启 ...