对用户敏感数据进行加密处理,后端再解密。比如登录时的密码

由后端生成公钥

node 使用node-rsa

1
2
3
4
5
6
import NodeRSA = require('node-rsa');
const RSA = new NodeRSA({ b: 512 });
RSA.setOptions({ encryptionScheme: 'pkcs1' });
const pubkey = RSA.exportKey('pkcs8-public-pem'); // 生成公钥,发给前端用于数据加密,不导出私钥信息
this.app.pubkey = pubkey;
this.app.RSA = RSA;// 把RSA对象保存在程序内存,随时调用

前端加密

前端使用jsencrypt

1
2
3
4
import JSEncrypt from "jsencrypt";
const encryptor = new JSEncrypt();
encryptor.setPublicKey(this.key);
const password = encryptor.encrypt("password"); // 把password传给后端

后端解密

1
const decryptedPassword = this.app.RSA.decrypt(payload.password, "utf8"); //得到解密后的数据