js 公钥加密

var $publicKey = '-----BEGIN PUBLIC KEY-----\n\
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0zI8aibR9ZN57QObFxvI\n\
wiRTmELItVVBLMrLd71ZqakR6oWUKkcAGgmxad2TCy3UeRe4A0Dduw97oXlbl5rK\n\
RGISzpLO8iMSYtsim5aXZX9SB5x3S9ees4CZ6MYD/4XQOTrU0r1TMT6wXlhVvwNb\n\
fMNYHm3vkY0rhfxBCVPFJoHjAGDFWNCAhf4KfalfvWsGL32p8N/exG2S4yXVHuV6\n\
cHDyFJAItKVmyuTmB62pnPs5KvNv6oPmtmhMxxsvBOyh7uLwB5TonxtZpWZ3A1wf\n\
43ByuU7F3qGnFqL0GeG/JuK+ZR40LARyevHy9OZ5pMa0Nwqb8PwfK810Bc8PxD8N\n\
EwIDAQAB\n\
-----END PUBLIC KEY-----\n\
';
var encryptPassChars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz*&-%/!?*+=()";
var rsaEncrypt = new JSEncrypt();
rsaEncrypt.setPublicKey($publicKey);
var keyEncrypt = function(data) {
	var passPhrase = generateEncryptPassword(32);

	var iv = CryptoJS.lib.WordArray.random(128/8).toString(CryptoJS.enc.Hex);
	var salt = CryptoJS.lib.WordArray.random(128/8).toString(CryptoJS.enc.Hex);
	var key = CryptoJS.PBKDF2(
		passPhrase, 
		CryptoJS.enc.Hex.parse(salt),
		{ keySize: 128/32, iterations: 1000 });

	var aesEncrypted = CryptoJS.AES.encrypt(data, key, { iv: CryptoJS.enc.Hex.parse(iv) });
	var aesKey = passPhrase + ":::" + salt + ":::" + aesEncrypted.iv;
	var encryptedMessage = aesEncrypted.ciphertext.toString(CryptoJS.enc.Base64);
	var encryptedKey = rsaEncrypt.encrypt(aesKey);

	var encrypted = encryptedKey + ":::" + encryptedMessage;
	return encrypted;
};

var generateEncryptPassword = function (length) {
	var randomstring = '';
	for (var i = 0; i < length; i++) {
		var rnum = Math.floor(Math.random() * encryptPassChars.length);
		randomstring += encryptPassChars.substring(rnum, rnum + 1);
	}
	return randomstring;
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值