rsa针对超长文本加密#
RSA的加密长度最多是117字节,当需要加密的内容过长时可以采用以下两种方法:
1.遍历字符串每次截取到117个字节加密
import {JSEncrypt} from "jsencrypt";
//js代码
let encryptor = new JSEncrypt();
encryptor.setPublicKey(key);//key是后端给的
let dataStr = JSON.stringify(data) //data是需要加密的字符
let num = Math.ceil(dataStr.length/117)
let dataArr = []
for(let i=0;i<num;i++){
if (parseInt(117*(i+1))<=dataStr.length) {
dataArr[i] = encryptor.encrypt(dataStr.substring(117*i,117*(i+1)))
} else {
dataArr[i] = encryptor.encrypt(dataStr.substring(117*i,dataStr.length))
}
}
return dataArr //返回一个数据,数组中每个元素是截取后字符串加密的结果,可以合并成一个字符串也可以数组,具体看后端要求
2.使用encryptlong
encryptlong已经帮我们做好长字符串的分割,直接拿来用
import {JSEncryptLong} from "encryptlong";
//js代码
let encryptor = new JSEncryptLong();
encryptor.setPublicKey(key) //key是后端给的
let dataStr = JSON.stringify(data)
return encryptor.encryptLong(dataStr)