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

一、简介

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 编码字符串。

你可能感兴趣的:(前端,node.js)