<%@ page language="java" contentType="text/javascript; charset=utf-8" import="com.homolo.usersystem.security.csrf.CSRFTokenService" %><%@include file="include/page.jspf"%> var $publicKey = '<%=StringUtils.replace(helper.getBean("us.plain.publickey", String.class), "\n", "\\n\\\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; };