js插件: https://pan.baidu.com/s/16MwvWMizBcq8D1JKSmkM4A
提前码:hr2y
1.页面对账号和密码进行加密 传输
var username = encrypt(username);
var password = encrypt(password);
//str为需要加密的String字符
function encrypt(str) {
//密钥--应和后台java解密或是前台js解密的密钥保持一致(16进制)
var key = CryptoJS.enc.Utf8.parse("wWKK335SKLDFJ146");
//偏移量
var srcs = CryptoJS.enc.Utf8.parse(str);
//算法
var encrypted = CryptoJS.AES.encrypt(srcs, key, { mode : CryptoJS.mode.ECB ,
padding : CryptoJS.pad.Pkcs7
});
//替换--防止值为“1”的情况
var reg = new RegExp('/', "g");
return encrypted.toString().replace(reg, "#");
}
2.JAVA 解密
private static final String KEY = "wWKK335SKLDFJ146";
//对页面传过来的账号和密码进行解密
pid = AesLoUtil.decrypt(pid, KEY);
password = AesLoUtil.decrypt(password, KEY);
3.工具类
/**
* 解密 (用于解密传输数据)
* @param encryptStr
* @param decryptKey
* @return
*/
public static String decrypt(String encryptStr, String decryptKey) {
try {
byte[] raw = decryptKey.getBytes(); //获得密码的字节数组
SecretKeySpec skey = new SecretKeySpec(raw, "AES"); //根据密码生成AES密钥
Cipher cipher = Cipher.getInstance(ALGORITHMSTR); //根据指定算法ALGORITHM自成密码器
cipher.init(Cipher.DECRYPT_MODE, skey); //初始化密码器,第一个参数为加密(ENCRYPT_MODE)或者解密(DECRYPT_MODE)操作,第二个参数为生成的AES密钥
byte [] encode_content = Base64.getDecoder().decode(encryptStr); //把密文字符串转回密文字节数组
byte [] byte_content = cipher.doFinal(encode_content); //密码器解密数据
return new String(byte_content,"utf-8"); //将解密后的数据转换为字符串返回
} catch (Exception e) {
e.printStackTrace();
return null;
}
}