为了账号安全,请及时绑定邮箱和手机立即绑定

请问能否提供一个使用jsencrypt的js公钥解密例子?

请问能否提供一个使用jsencrypt的js公钥解密例子?

蓝山帝景 2018-08-09 11:07:06
网上的都是js公钥加密例子,解密的例子就不好找。自己写尝试过很多次还是不行,希望帮助
查看完整描述

7 回答

?
qq_日出与幻想_0

TA贡献1条经验 获得超1个赞

菜鸟,几经探索解觉了这个问题

首先根据 jsencrypt 的官方文档,是不支持使用 公钥对数据解密的,最好的方法依然是换个支持的库

百度搜来搜去发现,其实nodejs 里面的 node-rsa 模块是支持这个需求的。 所以就试试了 ,居然跑通了 

npm install node-rsa 

main.js 中 引入相关组件 

let NodeRSA = require('node-rsa');
Vue.prototype.$nodersa = NodeRSA;

在需要解密的地方这样调用

let  data = this.GetUrlParam("data"); // 加密后的数据,base64 编码
let key =  new this.$nodersa(this.$global.rsa_pubkey);  // 设置你的公钥
console.log(key.decryptPublic(data,"utf-8")); // 解密数据


查看完整回答
1 反对 回复 2020-10-14
  • 昂布瑞拉
    昂布瑞拉
    尝试用答主回答发现有用。遇到一个坑:在new NodeRSA时需要指定秘钥的格式,有pkcs1,pksc8两种; 以下是我使用pkcs8公钥解密的代码。秘钥一定要带规定的前后缀。 const pkcs8PublicKeyData = '-----BEGIN PUBLIC KEY-----你的publickey-----END PUBLIC KEY-----' export function rsaDecryptByPublicKey(data) { const publicKey = new NodeRSA(pkcs8PublicKeyData, 'pkcs8-public') return publicKey.decryptPublic(data,"utf8") }
?
慕前端4074691

TA贡献1条经验 获得超1个赞

jsencrypt没有公钥解密,只能前端公钥加密后台私钥解密。如果想要实现双向加密,就要使用两套密钥。前台向后端发送数据时,使用第一套公钥加密,后台用第一套私钥解密。后台向前台发送数据时,后台使用第二套公钥加密,前台使用第二套私钥解密。


查看完整回答
1 反对 回复 2019-01-27
  • 幕布斯6125053
    幕布斯6125053
    1、 RSADecrypt //var a = this.doPrivate(d); var a = this.doPublic(d); 2、pkcs1unpad2 //return null 就实现了js就可以使用公钥解密,java端私钥加密的文本
?
qq_沐晓清枫_0

TA贡献1条经验 获得超0个赞

楼主你好,你的公钥解密的问题解决了吗?现在我也和你遇到同样的问题,希望得到帮助,谢谢!

查看完整回答
反对 回复 2019-09-03
?
Long_baby

TA贡献1条经验 获得超0个赞

你的这个问题解决了吗

查看完整回答
反对 回复 2018-11-16
?
幕布斯6125053

TA贡献1条经验 获得超0个赞

1、 RSADecrypt //var a = this.doPrivate(d); var a = this.doPublic(d); 

2、pkcs1unpad2 //return null 

就实现了js就可以使用公钥解密,java端私钥加密的文本

查看完整回答
反对 回复 2019-11-03
  • 7 回答
  • 1 关注
  • 10889 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信