并没有体验多少库,只看了一个npm里最多人用的一个库:
node-forge : 接口文档
rsa小知识
加密解密用的key是成对的,分别称为私钥和公钥,私钥必须存放在服务器等别人无法获取到的地方,公钥可以公开,谁都可以获取。
不能把公钥当私钥,私钥当公钥使用,因为私钥可以提取出公钥。
公钥加密的内容,只有私钥能解密,连公钥都不能解密自己加密的内容。
私钥加密的过程称为签名(sign),因为公钥是公开的,谁都能解密,所以无法保密信息,只能用于验证签名者是私钥持有人。
前端代码
// 他们github有提供 forge.min.js , 不用webpack的项目也可以直接引用
import forge from 'node-forge'
const message = '要加密我了' // 原文长度有限制,而且中文还要url编码,所以不能加密太长的字符串。一般也只用来加密密码。
const publicKey = '-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqM+l9ZWy1Frt6felFFLmfZNls\nVbU1dKpF8Rx83FtKCsztO5k/iV5N9BbfHFUg9Y40b/EK2j/BPc1xlLYAHMXn6563\nXCwZ4IuCxvfOwz9qT9gkKBxkI5b0rnikkSWTGlJEk2PdZ7Plc73Fa+bx3PvuKvMd\ncKWvd80+vt9+b/7hrwIDAQAB\n-----END PUBLIC KEY-----'</