相關依賴包
https://www.npmjs.com/package/jsencrypt
// 私钥
const privateKey = `
-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQCAxKwtmALgQK9kEWjVpqbuBB8icjb64UF4Bq/GpKTRN7ilOuUZ
AkCh0bDmFMayab4BQguvl+7eFma97h/A2OErNFzaK5zuWdc7/DZybB7UOzhfTgSm
88pPdjnQGb2mNFeQ1Gz2oxkix+Muk/iXwrMaexFDFjN237cXuW3FUndgfwIDAQAB
AoGAAPLyHefn5YU0hbVHI4P16P0oyZUz6Idudxb9hqZB/LS/bKBRfeyxUz/7YMa4
bCoxV0sIUQP6o7JgkXfGziILDsa1rcbMjR8JZypvMqkhDk+HvT8qi3uPjmxGT3us
SMM+WtT3wTmwKq9cb5ldrDRdDukH/EJVSEVZtFsr8q0UtUkCQQCQO9qnPXgPdyJ+
jvXZhGmDroE5FIOer9VkR/dddddddddddddddddOfGgSY1n4rVHh6nfRKZOHvQ0P
uKPicMgdAkEA5IzdV61q2TQAItP1PnrpnHslJ5lmls4pmLYVy6cRgPMDtTdfxErq
KuTxA0tEIVYznXJu4JPnP5vafyULsQPASwJAKAYT9Nif2lrK3ae6HTQbO4lPHpHM
vFo6sustUrpnFCf1MxBQVvThyyvGjWO4ccNWt4Qi343T/JS/bR9lis6VGQJAT3Ay
wvXQzJwJbBGWDVh1eGFJIcFs6f/Qb3bijn2MVPCimksb60NKrwwSRV3U2W131ULg
DQj7eJ14TXcX4Df4jwJAZMKmzojHUuFOsjo2VWIgwhjglYTVUknON+D2skatjyk1
jPSYEhquhaa7cyHfMioFrMjnZEjRiyLUYcSabcdf123123
-----END RSA PRIVATE KEY-----
`;
// 公钥
const publicKey = `
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCAxKwtmALgQK9kEWjVpqbuBB8i
cjb64UF4Bq/GpKTRN7ilOuUZAkCh0bDmaddfdb4BQguvl+7eFma97h/A2OErNFza
K5zuWdc7/DZybB7UOzhfTgSm88pPdjnQGb2mNFeQ1Gz2oxkix+abc/iXwrMaexFD
FjN237cXuW3FUndgf12312313
-----END PUBLIC KEY-----
`;
// 长文本加密处理
JSEncrypt.prototype.encryptLong = function (text) {
let k = this.getKey();
let maxLength = (((k.n.bitLength() + 7) >> 3) - 11);
try {
if (text.length > maxLength) {
let lt = text.match(/.{1,117}/g), ct = '';
lt.forEach((entry) => { ct += k.encrypt(entry); });
return ct;
}
return k.encrypt(text);
} catch (ex) {
console.warn('encryptLong error:', ex);
return false;
}
}
// 长文本解密处理
JSEncrypt.prototype.decryptLong = function (text) {
let k = this.getKey();
let maxLength = ((k.n.bitLength() + 7) >> 3);
try {
if (text.length > maxLength) {
let lt = text.match(/.{1,256}/g), ct = '';
lt.forEach((entry) => { ct += k.decrypt(entry); });
return ct;
}
return k.decrypt(text);
} catch (ex) {
console.warn('decryptLong error:', ex);
return false;
}
}
// 加密
function RsaEncrypt(encrypted) {
const encryptor = new JSEncrypt()
encryptor.setPublicKey(publicKey)
return encryptor.encryptLong(encrypted)
}
// 解密
function RsaDecrypt(encrypted) {
const decrypt = new JSEncrypt()
decrypt.setPrivateKey(privateKey)
return decrypt.decryptLong(encrypted)
}