nodejs之JSEncrypt模块,浏览器端非对称加密RSA算法库

news/2025/1/9 12:47:45/
一、简介

JSEncrypt 是一个用于在浏览器中进行RSA加密和解密的 JavaScript 库。它提供了一种简单的方式来生成 RSA 密钥对、加密数据并使用私钥解密数据。
以下是 JSEncrypt 模块的一些主要功能和用法:

  1. 生成密钥对:使用 JSEncrypt,你可以轻松地生成 RSA 密钥对。你可以通过调用 new JSEncrypt() 创建一个 JSEncrypt 实例,然后使用 getKey() 方法生成密钥对。生成的密钥对包括公钥和私钥。
  2. 加密数据:一旦你有了密钥对,你可以使用公钥对数据进行加密。使用 JSEncrypt 的 setPublicKey() 方法设置公钥,然后使用 encrypt() 方法对数据进行加密。加密后的数据可以通过网络传输或存储在数据库中。
  3. 解密数据:使用私钥可以对加密的数据进行解密。使用 JSEncrypt 的 setPrivateKey() 方法设置私钥,然后使用 decrypt() 方法对加密的数据进行解密。解密后的数据将恢复为原始的明文数据。
  4. 密钥格式:JSEncrypt 支持多种密钥格式,包括 PEM 和 DER。你可以使用 getKey() 方法获取生成的密钥对,并使用 getPrivateKey() 和 getPublicKey() 方法获取私钥和公钥的字符串表示。
  5. 密钥长度和算法:JSEncrypt 支持不同长度的密钥,包括 1024 位、2048 位和 4096 位。你可以根据需要选择适当的密钥长度。JSEncrypt 使用 RSA 算法进行加密和解密。
  6. 兼容性:JSEncrypt 在大多数现代浏览器中都能正常工作,包括 Chrome、Firefox、Safari 和 Edge。它不需要任何其他依赖项,只需引入 JSEncrypt 库即可开始使用。
二、安装
npm install jsencrypt
三、使用方法
window = {}const JSEncrypt = require('jsencrypt');
const { generateKeyPairSync } = require('crypto');// 生成 RSA 密钥对
const { publicKey, privateKey } = generateKeyPairSync('rsa', {modulusLength: 2048, // 密钥长度publicKeyEncoding: {type: 'spki',format: 'pem'},privateKeyEncoding: {type: 'pkcs8',format: 'pem'}
});console.log('公钥:', publicKey);
console.log('私钥:', privateKey);// 使用生成的密钥对进行加密和解密操作
const encryptor = new JSEncrypt();
encryptor.setPublicKey(publicKey);const plaintext = 'Hello, World!';
const encrypted = encryptor.encrypt(plaintext);
console.log('加密结果:', encrypted);const decryptor = new JSEncrypt();
decryptor.setPrivateKey(privateKey);const decrypted = decryptor.decrypt(encrypted);
console.log('解密结果:', decrypted);
四、相关函数
  1. rsaEncrypt = new JSEncrypt():创建RSA加密对象
  2. rsaEncrypt.setPrivateKey(privkey):设置私钥。
  3. rsaEncrypt.setPublicKey(pubkey):设置公钥。
  4. rsaEncrypt.sign(str, digestMethod, digestName):使用私钥对字符串 str 进行签名,并返回签名结果。
  • str:加密字符串
  • digestMethod:是签名算法的名称,例如 “sha256”,
  • digestName:是摘要算法的名称,例如 “RSA-SHA256”。
  1. rsaEncrypt.verify(str, signature, digestMethod):使用公钥验证字符串 str 的签名是否与给定的 signature 匹配。digestMethod 是签名算法的名称。
  • str:加密字符串
  • digestMethod:是签名算法的名称,例如 “sha256”,
  • digestName:是摘要算法的名称,例如 “RSA-SHA256”。
  1. rsaEncrypt.decrypt(str):使用私钥解密字符串 str,并返回解密后的结果。
  2. rsaEncrypt.encrypt(str):使用公钥对字符串 str 进行加密,并返回加密后的结果。
  3. rsaEncrypt.setKey(key):设置密钥对(公钥和私钥),key 是包含公钥和私钥的对象。
  4. rsaEncrypt.getKey(cb):异步获取密钥对(公钥和私钥),并通过回调函数 cb 返回结果。
  5. rsaEncrypt.getPrivateKey():获取私钥。
  6. rsaEncrypt.getPrivateKeyB64():获取私钥的 Base64 编码字符串。
  7. rsaEncrypt.getPublicKey():获取公钥。
  8. rsaEncrypt.getPublicKeyB64():获取公钥的 Base64 编码字符串。

http://www.ppmy.cn/news/1254572.html

相关文章

组件化编程

hello,我是小索奇,精心制作的Vue系列持续发放,涵盖大量的经验和示例,如果对您有用,可以点赞收藏哈~ 组件化编程 组件是什么? 一句话概括就是:实现特定功能的模块化代码单元 vm就是大哥&#xff…

SQL Server 数据库,为products表添加数据

在插入数据的时候,需要注意以下事项。 > 每次插入一整行数据,不可能只插入半行或几列数据。 > 数据值的数目必须与列数相同,每个数据值的数据类型、精度和小数位数也必须与相应的 列匹配。 > INSERT语句不能为标识列指定值&#…

004、简单页面-基础组件

之——基础组件 目录 之——基础组件 杂谈 正文 1.Image 1.0 数据源 1.1 缩放 1.2 大小 1.3 网络图片 2.Text 2.0 数据源 2.1 大小 2.2 粗细 2.3 颜色 2.5 样式字体 2.6 基础示例 2.7 对齐 2.8 省略 2.9 划线 3.TextInput 3.1 输入类型 3.2 提示文…

周一到周五进行osg和渲染,周末进行ue

之所以重新规划,是因为我在某家小公司做Ue开发顾问。其实,我这烂水平,也有人看得上,哈哈。 正好督促我学习ue了,也不荒废掉ue,也不用盲目跳槽,时间也分得很开,very good。

[HTB][Sherlocks] Meerkat

作为一家快速发展的初创公司,Forela一直在利用商业管理平台。不幸的是,我们的文档很少,而且我们的管理员也不是最有安全意识的。作为我们的新安全提供商,我们希望您查看我们导出的一些PCAP和日志数据,以确认我们是否已…

用Python来解一元二次方程

1 问题 如何利用python 来解一元二次方程组。 2 方法 解一元二次方程是高中数学中的重要内容,也是数学中的基础知识之一。在Python语言中,我们可以使用数学库中的函数来解一元二次方程。一元二次方程的一般形式为:axbxc0,其中a、b…

跟我学c++高级篇——动态反射之一遍历

一、动态反射 前面讲一篇静态反射,今天在这个基础上对动态反射进行一下入门。动态反射前面提到过,一般是指在运行时动态获取类型或者生成实例。那么如何才能动态获得类型呢?方法有很多种,下面从最简单的开始。 二、入门程序 动…

算法工程师面试八股(搜广推方向)

文章目录 机器学习线性和逻辑回归模型逻辑回归二分类和多分类的损失函数二分类为什么用交叉熵损失而不用MSE损失?偏差与方差Layer Normalization 和 Batch NormalizationSVM数据不均衡特征选择排序模型树模型进行特征工程的原因GBDTLR和GBDTRF和GBDTXGBoost二阶泰勒…