RN - jsencrypt 非对称加解密(分段加解密)
程序员文章站
2024-03-14 15:43:10
...
/******************************加密相关***********************************/
/*文本通过socket发送需要加密*/
/**
* [getPublicKey 获取公钥]
* @param {[type]} publicKeyString [公钥字符串]
*/
function getPublicKey(publicKeyString){
return '-----BEGIN PUBLIC KEY-----' + publicKeyString + '-----END PUBLIC KEY-----';
}
/**
* [getPrivateKey 获取私钥]
* @param {[type]} publicKeyString [私钥字符串]
*/
function getPrivateKey(privateKeyString){
return '-----BEGIN RSA PRIVATE KEY-----' + privateKeyString + '-----END RSA PRIVATE KEY-----';
}
/**
* [rsaEncrypt 文本加密]
* @param {[type]} publicKey [公钥]
* @param {[type]} content [内容]
*/
function rsaEncrypt(publicKey, content){
console.log('publicKey',publicKey)
console.log('要加密的所有内容',content);
let encrypt = new JSEncrypt();
encrypt.setPublicKey(publicKey);
// 要加密的文本超出最大字符限制,则分段加密
let ct = []
let maxLength = 20
if (content.length > maxLength) {
lt = content.match(/.{1,20}/g);
console.log('文本数组===',lt);
lt.map((item, index)=>{
console.log('要加密的文字',item);
let t1 = encrypt.encrypt(item);
console.log('加密后的文字',t1);
console.log('密后的文字的长度',t1.length);
ct.push(t1)
})
return ct
}
return [encrypt.encrypt(content)]
}
/**
* [rsaDecrypt 文本解密]
* @param {[type]} publicKey [私钥]
* @param {[type]} content [加密后的内容[]]
*/
function rsaDecrypt(privateKey, content) {
console.log('privateKey',privateKey)
if (content == undefined) return
// 如果是分段加密的,则要分段解密
let ct = ''
content.map((item,index)=>{
let decrypt = new JSEncrypt();
decrypt.setPrivateKey(privateKey);
console.log('要分段解密的=====',item);
let t1 = decrypt.decrypt(item);
console.log('解密结果========',t1);
ct += t1;
})
return ct
}
转载于:https://www.jianshu.com/p/9c0f442afb49
上一篇: rsa与aes混合加密java实现
下一篇: nodejs aee对称加解密