1、引用js(jsencrypt.min.js);
2、在发请求的js里增加
var password1 = $('#password').val();
var name1=$('#loginname').val();
var en_psw = "",en_name = "";
var publicKey = "";
var privateKey = "";
var url = basePath + "/login/rsaPublicKey.html";
$.ajax({
type:"post",
url:url,
data:{},
dataType:"json",
async:false,
success:function(data){
var falg = data.resultCode;
if('success' == falg){
publicKey = data.data.encrypt_data;
privateKey = data.data.encrypt_data_sy;
}
}
});
var encrypt = new JSEncrypt();
encrypt.setPublicKey(publicKey);
encrypt.setPrivateKey(privateKey);
en_psw = encrypt.encrypt(password1);
en_name = encrypt.encrypt(name1);
3、增加接口并增加工具类(RSAUtils.java)
/**
* 获取公钥和随机值
*
*/
@ResponseBody
@RequestMapping("/rsaPublicKey")
public Map<String, Object> rsaPublicKey(String data) {
Map<String, Object> resultMap = new HashMap<String, Object>();
String retData = "";
String sretData = "";
try {
Map<String, Object> keyMap = null;//RSAUtils2.genKeyPair();
retData = RSAUtils.getPublicKey(keyMap);
sretData = RSAUtils.getPrivateKey(keyMap);
//System.out.println("公钥="+retData);
//System.out.println("私钥="+sretData);
} catch (Exception e) {
}
resultMap.put("encrypt_data", retData);
resultMap.put("encrypt_data_sy", sretData);
return resultMap;
}
或
/**
* 获取公钥和随机值
* @throws IOException
*
*/
@RequestMapping("/rsaPublicKey.html")
public void rsaPublicKey(HttpServletResponse reseponse) throws IOException {
Map<String, Object> resultMap = new HashMap<String, Object>();
String retData = "";
String sretData = "";
try {
Map<String, Object> keyMap = null;//RSAUtils2.genKeyPair();
retData = RSAUtils.getPublicKey(keyMap);
sretData = RSAUtils.getPrivateKey(keyMap);
} catch (Exception e) {
log.error("获取公钥失败:", e);
}
resultMap.put("encrypt_data", retData);
resultMap.put("encrypt_data_sy", sretData);
Map<String, Object> mapData = new HashMap<String, Object>();
mapData.put("resultCode", "success");
mapData.put("data", resultMap);
String jsonStr = GsonUtils.getJson(mapData);
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
response.getWriter().print(jsonStr);
}
4、解密
Map<String, Object> keyMap = null;
try {
String sy = RSAUtils.getPrivateKey(keyMap);
String password = RSAUtils.decryptDataOnJava(mail.getPassword(),sy);
mail.setPassword(password);
System.out.println(password);
} catch (Exception e) {
System.out.println(e);
return ;
}