1、创建js文件Encryption.js
/**
* 加密解密
*/
/** RSA加密用 生成key */
function bodyRSA(){
/** 1024位的key参数写130,2014位的key参数写260 */
setMaxDigits(130);
/** ajax 调用后台方法,取回公钥 */
var keyR ;
$.ajax({
url: "/GHGL/Key/pk",//请求后台的url,本例是springMVC框架
type: "post",
cache: false,
async : false,
dataType: "text",
success: function (data)
{
keyR = data;
},
error:function (XMLHttpRequest, textStatus, errorThrown) {
alert("与服务器连接失败!");
}
});
/** RSAKeyPair 函数三个参数:加密指数、解密指数、系数 */
return new RSAKeyPair("10001","",keyR);
}
/** AES加密用 随机生成key和iv */
function randomString() {
var chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var length= chars.length;
var pwd='';
for(var i = 0; i < 16 ;i++){
pwd += chars.charAt(Math.floor(Math.random() * length));
}
return pwd;
}
/**
* AES加密
* @param data
* @param key
* @param iv
* @returns
*/
function getAesString(data,key,iv){
var key = CryptoJS.enc.Utf8.parse(key);
var iv = CryptoJS.enc.Utf8.parse(iv);
var encrypted = CryptoJS.AES.encrypt(data,key,
{
iv:iv,
mode:CryptoJS.mode.CBC,
padding:CryptoJS.pad.Pkcs7
});
return encrypted.toString();
}
/**
* AES解密
* @param encrypted
* @param key
* @param iv
* @returns
*/
function getDAesString(encrypted,key,iv){
var key = CryptoJS.enc.Utf8.parse(key);
var iv = CryptoJS.enc.Utf8.parse(iv);
var decrypted = CryptoJS.AES.decrypt(encrypted,key,
{
iv:iv,
mode:CryptoJS.mode.CBC,
padding:CryptoJS.pad.Pkcs7
});
return decodeURIComponent(decrypted.toString(CryptoJS.enc.Utf8)).replace("+", " ");
}
2、ajax请求后台的java类(1)
package com.djzh.basicdata.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.djzh.common.utils.EncryptionDecryption;
/**
* 获取RSA密钥文件中的公钥
* @author : hanlin
* @date : 2017年2月3日 下午3:32:31
* @version : 1.0
*/
@Contr