IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 使用node-forge pki进行RSA加密 -> 正文阅读

[JavaScript知识库]使用node-forge pki进行RSA加密

先放npm官方文档:www.npmjs.com/package/node-forge

在知道RSA加密的大致原理后,再往下看

使用例子

简单写个方法:

// 引入依赖
import forge from 'node-forge';
// base64转换(一般公钥私钥生成都是经过base64转换处理)
const encode64 = str => forge.util.encode64(str);

// 加密的方法,入参是:待加密文本,公钥,是否需要转化为Pem格式
const encrypted = (text: string, publicKey: string, needFormatPem: boolean) => {
  if (!publicKey) return text;
  let curPublicKey = publicKey;
  if (needFormatPem) {
    // 后端无法读取文件时返回的公钥是非Pem格式
    curPublicKey = `-----BEGIN PUBLIC KEY-----\n${publicKey}\n-----END PUBLIC KEY-----`;
  }
  // 生成公钥对象(公钥是Pem格式)
  const publicKeyObj = forge.pki.publicKeyFromPem(curPublicKey);
  // encrypt加密并转换为base64编码格式
  return encode64(publicKeyObj.encrypt(text));
};

export default encrypted;

内容梳理:

1.初始化公钥、私钥对象

需要根据公钥的格式使用对应的生成方法

const pki = forge.pki;

// pem格式
var publicKey = pki.publicKeyFromPem(pem);
// 可以将公钥对象转换回原格式
var pem = pki.publicKeyToPem(publicKey);
// ASN.1编码格式
var publicKey = pki.publicKeyFromAsn1(subjectPublicKeyInfo);
// 可以将公钥对象转换回原格式
var subjectPublicKeyInfo = pki.publicKeyToAsn1(publicKey);

同理,生成私钥需要对应的方法

// convert a PEM-formatted private key to a Forge private key
var privateKey = pki.privateKeyFromPem(pem);

// convert a Forge private key to PEM-format
var pem = pki.privateKeyToPem(privateKey);

// convert an ASN.1 PrivateKeyInfo or RSAPrivateKey to a Forge private key
var privateKey = pki.privateKeyFromAsn1(rsaPrivateKey);

// convert a Forge private key to an ASN.1 RSAPrivateKey
var rsaPrivateKey = pki.privateKeyToAsn1(privateKey);

2.使用公钥/私钥对象进行加密/解密

// 加密
var encrypted = publicKey.encrypt(bytes);

// 解密
var decrypted = privateKey.decrypt(encrypted);

加密解密的方法不仅只是一个入参,还有拓展功能,第二个参数用于指定RSA加密的标准

第二个参数为空时默认为 RSAES PKCS#1 v1.5标准

// 使用RSAES PKCS#1 v1.5标准加密
var encrypted = publicKey.encrypt(bytes, 'RSAES-PKCS1-V1_5');

// 使用RSAES PKCS#1 v1.5标准解密
var decrypted = privateKey.decrypt(encrypted, 'RSAES-PKCS1-V1_5');

// 使用RSAES-OAEP标准加密
var encrypted = publicKey.encrypt(bytes, 'RSA-OAEP');

// 使用RSAES-OAEP标准解密
var decrypted = privateKey.decrypt(encrypted, 'RSA-OAEP');

还有别的参数,可以去文档查看,链接见顶部。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-10 11:48:02  更:2022-05-10 11:48:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 8:39:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码