npm i encryptlong -S
浏览器使用:
<script src="./bin/jsencrypt.js"></script>
解决办法: encryptlong是一个基于jsencrypt扩展长文本分段加解密功能
这里只扩展了长文本的分段加解密,其它 api 请查看官网 http://travistidwell.com/jsencrypt
encryptLong() 长文本加密
decryptLong() 长文本解密
import { JSEncrypt } from 'encryptlong' //引用
//加密
export const encruption = (val) => {
let encrypt = new JSEncrypt()
encrypt.setPublicKey(enkey)
return encrypt.encryptLong(val)
}
//解密
export const decryption = (val) => {
let encrypt = new JSEncrypt()
encrypt.setPrivateKey(deKey)
return encrypt.decryptLong(val)
}
案例:
let startTime = new Date();
//公钥
const PUBLIC_KEY = `
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDKX1Fs2JUD25zrAEwPnjnZC0az
rl1XjGzGrJ64eb1lr9QVVOO2zGKZdqDLZD4Ut4Mp6GHMaqqFXKm+zN7IAXu+mqZb
UrqUziHE5YGC02wObiZEzfa6V9a8ZvqpB+Z8KO+hAkkjzjMl+E+hDORpZmez3SMz
etn7mcCeLw8/vmxz3QIDAQAB
-----END PUBLIC KEY-----`;
//私钥
const PRIVATE_KEY = `
-----BEGIN PUBLIC KEY-----
MIICXgIBAAKBgQDKX1Fs2JUD25zrAEwPnjnZC0azrl1XjGzGrJ64eb1lr9QVVOO2
zGKZdqDLZD4Ut4Mp6GHMaqqFXKm+zN7IAXu+mqZbUrqUziHE5YGC02wObiZEzfa6
V9a8ZvqpB+Z8KO+hAkkjzjMl+E+hDORpZmez3SMzetn7mcCeLw8/vmxz3QIDAQAB
AoGBAJBr6b4V6nJwXdHPyngy4PGl/HTqcK60BkTamALqzmEtU9tNU5z2yz7dy+6a
wTsjo7Vao8CwNrUp5fHGXw65EEc1/3Iu2Fiix0XF7RP4NFSoxbBmzQW1nUK/5DFi
4VR1uhEmdbgLwGabsdqzeUqhRKkRGAPVCotBjaDBOu0J3Mu5AkEA+SM7Ctu7evOv
ZwjWrp9a5MGxJ9yLLabbIuWL+420jr2G6ojaTZ2ROA2DWWQPx4JqWxDHttomrb38
dk2emP2WAwJBAM/yU58YRQ+dTeuTzNYC1JdWcs35n9+hoVP7y+x29CmcqDTPp3nR
Bbbq88yMb2nZdlwthWi7BurNHsRJFqj0GJ8CQF5gJCuW1UxcJ2PGi1yW7R2e6fcJ
qoden8B2aDKgmXdBAGyz7s5cE/jB1bH1H60aECPzFVSFCwXh5FMEUEHwPfUCQQC7
JqZ57lbhebrSRcA58GwzFFvY40wu8gIHWvwqgti2xsZgWW+qZCPXf9gSBWaUhmJP
Da0fGAxesGN7VyhswNuTAkEAzCFNqL/zwHXcwh9YyHTdk/bRWIJq49jTA+vbgGv0
szKIvGRKoRbub3NEUiI80TDsCAvbJ6R80J7RjnpmShOwcA==
-----END PUBLIC KEY-----`;
// 使用设置公私钥
const enc = new JSEncrypt();
enc.setPublicKey(PUBLIC_KEY);
enc.setPublicKey(PRIVATE_KEY);
// 一段长文本json
let data = {
code: 200,
result: {
timestamp: 1572321851823,
inter1: ["123123123", "123123123", "123123123", "123123123", "123123123"],
inter2: ["123123123", "123123123", "123123123", "123123123", "123123123"],
inter3: ["123123123", "123123123", "123123123", "123123123", "123123123"],
inter4: ["123123123", "123123123", "123123123", "123123123", "123123123"],
inter5: ["123123123", "123123123", "123123123", "123123123", "123123123"],
inter6: ["123123123", "123123123", "123123123", "123123123", "123123123"],
stream: {},
caton: {},
card: []
}
};
data = JSON.stringify(data);
let encrypted = enc.encryptLong(data);
let endTime = new Date();
console.log("加密后数据:%o", encrypted);
console.log("加密时间" + (endTime - startTime) + "ms");
//使用私钥解密
let uncrypted = enc.decryptLong(encrypted);
console.log("解密后数据:%o", uncrypted);
获取私钥就会得到相应的公钥
下载地址:https://github.com/LesixCoder/encryptlong
https://travistidwell.com/jsencrypt/demo/index.html
在线用公钥私钥解密加密:https://the-x.cn/zh-cn/cryptography/Rsa.aspx