前端使用jsencrypt进行RSA公钥解密

news2024/9/21 14:58:30

默认jsencrypt是不支持公钥解密的,需要更改
1.将jsencrypt.js源码复制一分到utils包下

在这里插入图片描述
在这里插入图片描述
2.然后对utils包下的jsencrypt进行更改

更改RSAKey.prototype.decrypt 方法(将doPrivate改为doPublic)

	RSAKey.prototype.decrypt = function (ctext) {
        var c = parseBigInt(ctext, 16);
        var m = this.doPublic(c);
        if (m == null) {
            return null;
        }
        return pkcs1unpad2(m, (this.n.bitLength() + 7) >> 3);
    };

原:
在这里插入图片描述
新:
在这里插入图片描述
更改pkcs1unpad2方法,更换内容如下:

function pkcs1unpad2(d, n) {
    var b = d.toByteArray()
    var i = 0
    while (i < b.length && b[i] === 0) {
      ++i
    }
    // if (b.length - i !== n - 1 || b[i] !== 2) {
    //   return null
    // }
    ++i
    while (b[i] !== 0) {
      if (++i >= b.length) {
        return null
      }
    }
    var ret = ''
    while (++i < b.length) {
      var c = b[i] & 255
      if (c < 128) { // utf-8 decode
        ret += String.fromCharCode(c)
      } else if ((c > 191) && (c < 224)) {
        ret += String.fromCharCode(((c & 31) << 6) | (b[i + 1] & 63))
        ++i
      } else {
        ret += String.fromCharCode(((c & 15) << 12) | ((b[i + 1] & 63) << 6) | (b[i + 2] & 63))
        i += 2
      }
    }
    return ret
  }
  

原:
在这里插入图片描述
新:
在这里插入图片描述
3. 实际使用:
import JSEncrypt from '@/utils/jsencrypt'

var encryptor = new JSEncrypt();  
	//	私钥加密后的数据
  var data = 'fGrPg4EOup/nopw4f8XCqNenVsPE2Ujr70TvjDvrfUDFFiYcx7ewLG7tM76x7N0nKiO7/QiWZU0GAEhrMBr4oNm+zGCiCnMGeLaPUM0KOnYgN6kimFsMOIerd/25S3qdqj4qED84bTaT7VBni1L3APo8JOKVcWIk4kJPKK1nJUNwsQxJvbrD2+nOdrWjRuq3WIftdcEHBiVGycai+j8QUrVTKcTmYFjCWwC7JFRQjYv26pmCbq3rs3CT24xazc4CLDkx+y98H++my7zZkVTI675kH+pYlZbQfBkiHvLtCHUOEi+RDXhGNi9GO2DVTBVnAP173BV2VyFFYj85qeD/Qw==';
	// 公钥
var publicKey = 
  '-----BEGIN PUBLIC KEY-----\n' +  
  'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3IHVdOJg+nqaZGKc9wXJ'+
  'KUqwI95F/qCvPQoDyf0cDZzebbAGEOs4m7LAQwfa6A+q6cRhBHtDYco6cv7wufmi'+
  'qJ9U7yVFnvha1wi3jkXn1AxUAvUw+bLtrhjZg/akxAukXX7fsOdCPbk8AitlnaH1'+
  '2S5Np0Ugxx/rN+LOkkxwAOIzu/z1SvGLoPGFDHW/7mna8txs3SwlpG3TDGOXOsEu'+
  '4vcXbRKmLApUlrluhny7GTGGVi8TqrmviyrfcAj/098AI5aRzv/Y0TchsJVOtoaz'+
  'CsHjjp/Cf4RnSuL+KyBio7wGlR+Iyy/ywpMUiae3vJb3qd0Wx8824SbgClTIA1f4'+
  'HwIDAQAB'+
    '\n-----END PUBLIC KEY-----';  

  // console.log("111",decrypt(data,publicKey));

  encryptor.setPublicKey(publicKey);  
  var decryptedData = encryptor.decrypt(data,publicKey);  
    
  // 显示解密结果  
  console.log("解密:",decryptedData);

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1013439.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

康耐视读码器DataMan软件详细使用步骤

1、 点击桌面已经安装好的 dataman 软件并打开 2、 打开之后,点击刷新,刷出来读码器的图标,双击进行连接,或者选中后,点击右下角 的连接。(也可先进行第 9—(2)步更改读码器的 IP,对应的连接对象也更改到同一网 段)如图 3、 连接之后,在设置 快速设置下面把实时显…

《向量数据库指南》——Milvus Cloud唯一一家存算分离的数据库架构,它的技术难点在哪里?

在过去的两年多里,我们走过了一段技术探索的旅程,但事实上我们在这个过程中遇到了许多挑战。因为通常情况下,存储和计算分离的架构主要用于 OLAP 数据库。在传统的 OLAP 数据库中,数据的更新频率相对较低。 虽然一些 OLAP 数据库支持更新操作,但更新和删除的能力相对有限。…

关于学什么和如何学的思考

本篇文章出自自己的零碎想法记录&#xff0c;文章的主题和内容刚开始只源于这篇《卡片笔记数量超限后所思所想》文章中记得一些零碎笔记和平常的一些思考&#xff0c;正如前文《关于标签管理&#xff0c;知识管理工具的思考》一样&#xff0c;刚开始也是源于自己生活实践中的一…

可以用哪些软件来批量生成文档?

作者&#xff1a;天哥 什么是文档生成器&#xff1f; 先举一个实际业务场景。 无论是微软Office还是ONLYOFFICE&#xff0c;还是其它Office软件&#xff0c;创建文档编写文档&#xff0c;其工作主要都是我们人工完成的&#xff0c;打开软件&#xff0c;新建文档&#xff0c;或…

跨境电商公司Linkage Global申请750万美元纳斯达克IPO上市

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;跨境电商公司Linkage Global近期已向美国证券交易委员会&#xff08;SEC&#xff09;提交招股书&#xff0c;申请在纳斯达克IPO上市&#xff0c;股票代码为(LGCB),Linkage Global计划通过此次纳…

Linux编程之线程池的设计与实现

Linux编程之线程池的设计与实现&#xff08;C98&#xff09; 代码 假设服务器的硬件资源“充裕”&#xff0c;那么提高服务器性能的一个很直接的方法就是空间换时间&#xff0c; 即“浪费”服务器的硬件资源&#xff0c;以换取其运行效率。 提升服务器性能的一个重要方法就是…

基于YOLOv2和传感器的多功能门禁系统

文章和项目源码已经归档至【Github仓库&#xff1a;https://github.com/timerring/face-recognition-door 】或者公众号【AIShareLab】回复 人脸识别门禁 也可获取。 文章目录 1.系统制作方案概述1.1系统设计的立意1.2系统的主要组成1.3系统的制作方案1.3.1制作方案框图1.3.2制…

基于ntchat的微信群聊同步机器人

微信群有500人上限的限制&#xff0c;建立多个群的话又有信息无法互通的不便&#xff0c;此机器人通过自动将消息转发到同一个同步组内的所有群&#xff0c;消除这一不便性&#xff0c;间接达成扩大群成员数的目的。 效果演示&#xff1a; 项目地址&#xff1a; https://gith…

vue-ueditor-wrap 中获取光标所在的位置,插入文本内容

1.背景 因项目需要&#xff0c;在富文本编辑框中可以设置样式&#xff0c;并且可以在内容光标所在的位置插入文本内容。 2.项目中使用 vue-ueditor-wrap 请跳转至以下链接进行查看 vue项目中使用vue-ueditor-wrap_理想和远方_在路上的博客-CSDN博客 3.获取光标所在的位置&a…

闲鱼自动化软件——筛选/发送系统 V22已经测试完毕

更新 因为闲鱼版本更新&#xff0c;以及闲鱼整个程序维护记录&#xff0c;又增加了一些优化和提升的代码&#xff0c;所以又一次在整体上更新了一版闲鱼的此款软件。 主要更新点&#xff1a; 1、添加显示自定义按钮&#xff0c;可以自动显示最新数据&#xff0c;也可以手动翻…

巨人互动|Google海外户Google+有什么用途

Google是Google推出的一项社交网络服务&#xff0c;类似于Facebook和Twitter。它为用户提供了一个分享和交流的平台&#xff0c;具有许多不同的用途。 首先&#xff0c;Google可以让用户轻松地与朋友、家人、同事和其他人建立联系。通过添加他人为好友或加入共同兴趣的群组&am…

第二证券:华为5.5G迎来新突破 政策加码利好银行估值

昨日&#xff0c;沪指盘中维持窄幅震动走势&#xff0c;深成指、创业板指弱势下探&#xff0c;创业板指再创逾3年新低&#xff1b;到收盘&#xff0c;沪指微涨0.11%报3126.55点&#xff0c;深成指跌0.57%报10197.59点&#xff0c;创业板指跌0.78%报2011.88点&#xff1b;两市算…

C++:vector中pair的排序方法

前言 有时我们需要往 vector 容器中插入 “键值对(pair<int, int>)” 数据&#xff0c;同时又需要按第二个或者第一个进行排序。如上的问题可以借助 STL 的 sort 完成。 程序 1. 向算法传递函数 static bool cmp(const pair<int, int>& a, const pair<int…

使用原生的js实现分享功能,代码非常精简

分享一个原生的js实现移动端分享功能&#xff0c;希望大家喜欢。 兼容性&#xff1a; 实现代码&#xff1a; function share(){ if (!navigator.share) { alert("您当前浏览器不支持分享&#xff01;"); } else { navigator.share({title: {$title},text: {$introd…

Linux操作系统(四):内存管理组件

该部分的学习框架如下&#xff1a; 了解基本内存管理概念&#xff1a;物理内存、虚拟内存、地址空间等。学习虚拟内存的概念、作用和原理。了解虚拟内存是如何将物理内存和进程的地址空间分开管理的&#xff0c;以及它如何提供了更大的地址空间和更好的内存管理。内存分段&…

管理方法论:4. 一对一沟通——了解真实情况

团队人越多&#xff0c;管理者了解真实情况就越困难&#xff0c;为什么&#xff1f; 缺乏安静的、可以专注于沟通的环境。有些话不能跟太多人说&#xff0c;尤其是负面的想法和意见。有些人本来就内向、被动&#xff0c;其他人说话时&#xff0c;自己往往习惯于听&#xff0c;…

java和fastjson

1.java是如何跨平台通信的 java--->class字节码--->jvm虚拟机运行 2.使因为jvm只会读文件名 如果不一致 则无法找到文件 3.main 函数说明java代码的接口 被使用 4.java和class后缀的区别 java是当前编写的代码文件 class是编译后的文件 5.void 没有返回值 这…

报警icon图闪动效果实现css动画

<div class"right-content" style"padding-left:10px; padding-top: 10px;"><div class"text-nowrap">离线摄像仪</div><div class"number-all" :style"{ color: cameraOffline > 0 ? red : #e7b215 }&…

许可分析 license分析 第六章

许可分析是指对软件许可证进行详细的分析和评估&#xff0c;以了解组织内部对软件许可的需求和使用情况。通过许可分析&#xff0c;可以帮助组织更好地管理和优化软件许可证的使用。以下是一些可能的许可分析方法和步骤&#xff1a; 软件许可证变更管理&#xff1a;建立合适的软…

使用TreeMap数据结构解决独特的搜索需求

TreeMap是Java集合&#xff0c;它以有序的键及其相应的值的形式组织数据。它自JDK 1.2以来就已经存在。在内部&#xff0c;TreeMap使用红黑树来组织数据&#xff0c;这是一种自平衡二叉树。TreeMap中的键是唯一的标识符&#xff0c;默认情况下&#xff0c;TreeMap会根据键的自然…