import { JSEncrypt } from "jsencrypt";
function en_str(target_str, pubkey) {
/**
分段加密信息
:params target_str: 需要加密的信息,此处为很长的信息
:pubkey: 公钥
:return: 存储密文的数组
**/
let encrypt = new JSEncrypt();
encrypt.setPublicKey(pubkey);
let en_array = [];
let n = 100; // 每段信息的长度
for (let i = 0, l = target_str.length; i < l / n; i++) {
let message = target_str.slice(n * i, n * (i + 1));
en_array.push(encrypt.encrypt(message));
}
return en_array;
}
一. 介绍
为了前后端传输数据的安全性,需要对数据进行加密。因此选定使用非对称加密,此处为
RSA
。在传输数据前,后端生成公钥和私钥,将公钥给前端,前端加密之后,将密文传给后端,后端使用私钥解密即可得到原始的数据。
二. 环境
jsencrypt
加密Crypto
生成密钥和解密三. 后端生成密钥
四. 前端用公钥加密
五. 后端使用私钥解密
base64
先解密一遍是必要的,否则报错ValueError: Ciphertext with incorrect length.
六. 完整代码
前端
后端
七. 分段加密
RSA
加密信息最长为128
位,过长则会报错,因此,对于过长的信息需要分段加密,后端也要分段解密后拼装。