android js rsa加密,js JavaScript RSA 加密

let publicKey = '';

let privateKey = '';

//使用 公钥 加密

const fnencrypt = (password) => {

let encryptor = new JSEncrypt(); // JSEncrypt对象

encryptor.setPublicKey(publicKey); // 公钥

let rsaPassWord = encryptor.encrypt(password); // 密码进行加密

return rsaPassWord;

};

// 使用 私钥 解密

const fndecrypt = (password) => {

let decryptor = new JSEncrypt();

decryptor.setPrivateKey(privateKey); // 私钥

let rsaPassWord = decryptor.decrypt(password);

return rsaPassWord;

};

//超过117(加密)长度的原文内容分割成多个部分

// 在源码 自己 添加

***

JSEncrypt.prototype.encryptLong = function(string) {

var k = this.getKey();

try {

var lt = "";

var ct = "";

//RSA每次加密117bytes,需要辅助方法判断字符串截取位置

//1.获取字符串截取点

var bytes = new Array();

bytes.push(0);

var byteNo = 0;

var len,c;

len = string.length;

var temp = 0;

for(var i = 0; i < len; i++){

c = string.charCodeAt(i);

if(c >= 0x010000 && c <= 0x10FFFF){

byteNo += 4;

}else if(c >= 0x000800 && c <= 0x00FFFF){

byteNo += 3;

}else if(c >= 0x000080 && c <= 0x0007FF){

byteNo += 2;

}else{

byteNo += 1;

}

if((byteNo % 117) >= 114 || (byteNo % 117) == 0){

if(byteNo-temp >= 114){

bytes.push(i);

temp = byteNo;

}

}

}

//2.截取字符串并分段加密

if(bytes.length > 1){

for(var i=0;i< bytes.length-1; i++){

var str;

if(i == 0){

str = string.substring(0,bytes[i+1]+1);

}else{

str = string.substring(bytes[i]+1,bytes[i+1]+1);

}

var t1 = k.encrypt(str);

ct += t1;

};

if(bytes[bytes.length-1] != string.length-1){

var lastStr = string.substring(bytes[bytes.length-1]+1);

ct += k.encrypt(lastStr);

}

return hex2b64(ct);

}

var t = k.encrypt(string);

var y = hex2b64(t);

return y;

} catch (ex) {

return false;

}

};

***

const fnencryptLone = (password) => {

let encryptor = new JSEncrypt(); // JSEncrypt对象

encryptor.setPublicKey(publicKey); // 公钥

let rsaPassWord = encryptor.encryptLong(password); // 超长密码进行加密

return rsaPassWord;

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值