oracle解密rsa,JS RSA 公钥解密

本文介绍了如何在JavaScript中使用RSA公钥解密后台使用私钥加密的数据。通常,公钥用于加密,私钥用于解密,但在此场景下,需求相反。通过修改RSAKey.prototype.decrypt方法和pkcs1unpad2函数,实现了公钥解密。最后,展示了调用解密的示例代码。
摘要由CSDN通过智能技术生成

JS RSA 公钥解密

需求

后台使用私钥加密数据,然后前端使用公钥解密,也不知道怎么搞出来的这种需求,感觉很不符合逻辑。我对RSA的理解为:公钥负责加密,私钥负责解密。签名的话,私钥负责签名,公钥负责验证。例如:既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证。

参考

实现

1. 修改 RSAKey.prototype.decrypt 中 this.doPrivate(c) 为 this.doPublic(c);

RSAKey.prototype.decrypt = function (ctext) {

var c = parseBigInt(ctext, 16);

var m = this.doPublic(c);

//var m = this.doPrivate(c);

if (m == null) {

return null;

}

return pkcs1unpad2(m, (this.n.bitLength() + 7) >> 3);

};

2. 修改 pkcs1unpad2

function pkcs1unpad2(d, n) {

var b = d.toByteArray();

var i = 0;

while

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值