前端rsa加密与解密
RSA加密一般是公钥加密私钥解密,多用于前台公钥加密传参给后台,后台私钥解密。
使用RSA加密时需要用到jsencrypt
,本文会介绍怎么安装及使用。
1. 安装jsencrypt
npm install jsencrypt
2. 使用方法
- 引入包
import JSEncrypt from 'jsencrypt'
- 加密
var encryptor = new JSEncrypt() // 创建加密对象实例
//公钥,复制的时候要小心不要有空格
var pubKey = '-----BEGIN PUBLIC KEY-----MIGfMA0......AQAB-----END PUBLIC KEY-----'
encryptor.setPublicKey(pubKey)//设置公钥
var rsaPassWord = encryptor.encrypt('要加密的内容') // 对内容进行加密
- 解密
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.