前端rsa加密与解密

发布时间 2023-07-05 15:17:21作者: Cxymds

RSA加密一般是公钥加密私钥解密,多用于前台公钥加密传参给后台,后台私钥解密。

使用RSA加密时需要用到jsencrypt,本文会介绍怎么安装及使用。

1. 安装jsencrypt

 npm install jsencrypt

2. 使用方法

  1. 引入包
import JSEncrypt from 'jsencrypt'
  1. 加密
 var encryptor = new JSEncrypt()  // 创建加密对象实例
  //公钥,复制的时候要小心不要有空格
  var pubKey = '-----BEGIN PUBLIC KEY-----MIGfMA0......AQAB-----END PUBLIC KEY-----'
  encryptor.setPublicKey(pubKey)//设置公钥
  var rsaPassWord = encryptor.encrypt('要加密的内容')  // 对内容进行加密
  1. 解密
  var decrypt = new JSEncrypt()//创建解密对象实例
  //生成的秘钥私钥
  var priKey  = '-----BEGIN RSA PRIVATE KEY-----MIICXAIBA......AKBgQC1QQWRk=-----END RSA PRIVATE KEY----'
  decrypt.setPrivateKey(priKey)//设置秘钥
  var uncrypted = decrypt.decrypt(encrypted)//解密之前拿公钥加密的内容

3. 密钥生成

Mac系统内置OpenSSL(开源加密库),所以可以直接在终端上使用命令

Windows系统可以使用git命令行工具(这里注意使用git bash输入命令行,cmd和powershell识别不了命令行)

  • 生成私钥,密钥长度为1024bit
openssl genrsa -out private.pem 1024
  • 从私钥中提取公钥
openssl rsa -in private.pem -pubout -out public.pem

私钥和公钥生成成功后,在项目中会生成两个文件,private.pem 和 public.pem

注意:

加密的对象一定要是字符串 如果你加密的是密码 则npm i jsencrypt 即可
如果加密的是对象并且数据还挺多的 比如含有token 用npm i encryptlong -S
npm i jsencrypt加密长对象将返回false 或者报Message too long for RSA.