本篇文章給大家分享的是有關(guān)怎么實(shí)現(xiàn)security.js RSA加密與java客戶(hù)端解密,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
創(chuàng)新互聯(lián)公司是專(zhuān)業(yè)的麟游網(wǎng)站建設(shè)公司,麟游接單;提供成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行麟游網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
在通常的http協(xié)議的網(wǎng)站中直接提交數(shù)據(jù)可以通過(guò)信息抓取從而暴露提交者所提交的信息,(伍子胥:l47可181O微51l3可微) 特別是注冊(cè)時(shí)的密碼和登錄時(shí)的密碼容易被泄露。那么怎么防止這種現(xiàn)象呢?很多人會(huì)想到加密技術(shù),對(duì)沒(méi)錯(cuò),本文所講的就是使用rsa非對(duì)稱(chēng)加密技術(shù)進(jìn)行數(shù)據(jù)提交,由客戶(hù)獲取后臺(tái)所產(chǎn)生的公鑰對(duì)提交字段進(jìn)行加密,用戶(hù)提交后再由后臺(tái)所產(chǎn)生的私鑰進(jìn)行解密。這里以用戶(hù)登錄時(shí)對(duì)用戶(hù)密碼進(jìn)行加密為列,下面直接上代碼:
前端js代碼:
$(function(){
$('#subt').click(function(){
var name = jQuery('#loginName').val();
var password =jQuery('#loginPwd').val();
if(name==null||name==""){
alert("用戶(hù)名不得為空!");
return;
}
if(password==null||password==""){
alert("密碼不得為空!");
return;
}
jQuery.ajax({
type:"post",
url:"loginset",
success:function(rd){
if(rd!=null){
//加密模
var Modulus = rd.split(';')[0];
//公鑰指數(shù)
var public_exponent = rd.split(';')[1];
//通過(guò)模和公鑰參數(shù)獲取公鑰
var key = new RSAUtils.getKeyPair(private_exponent, "", Modulus);
//顛倒密碼的順序,要不然后解密后會(huì)發(fā)現(xiàn)密碼順序是反的
var reversedPwd = password.split("").reverse().join("");
//對(duì)密碼進(jìn)行加密傳輸
var encrypedPwd = RSAUtils.encryptedString(key,reversedPwd);
jQuery('#subPwd').val(encrypedPwd);
jQuery('#loginPwd').val("");
jQuery('#login').submit();
}
}
})
})
})
前端html代碼:
后臺(tái)java產(chǎn)生RSA加密參數(shù)代碼:
RSAUtils rsa = new RSAUtils();
//生成公鑰和密鑰
Map
RSAPublicKey publicKey = (RSAPublicKey) keyMap.get("publicKey");
RSAPrivateKey privateKey = (RSAPrivateKey) keyMap.get("privateKey");
//js通過(guò)模和公鑰指數(shù)獲取公鑰對(duì)字符串進(jìn)行加密,注意必須轉(zhuǎn)為16進(jìn)制
//模
String Modulus = publicKey.getModulus().toString(16);
//公鑰指數(shù)
String Exponent = publicKey.getPublicExponent().toString(16);
//私鑰指數(shù)
String private_exponent = privateKey.getPrivateExponent().toString();
HttpSession session = request.getSession();
//java中的模和私鑰指數(shù)不需要轉(zhuǎn)16進(jìn)制,但是js中的需要轉(zhuǎn)換為16進(jìn)制
session.setAttribute("Modulus",publicKey.getModulus().toString());
session.setAttribute("private_exponent",private_exponent);
String strSet = Modulus+";"+Exponent;
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
out.write(strSet);
out.flush();
以上就是怎么實(shí)現(xiàn)security.js RSA加密與java客戶(hù)端解密,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。