一.背景
比如在用户session缓存清掉的情况下弹出一个框让用户当即输入账号密码登陆,需要对密码进行加密(以rsa加密为例,需要获得秘钥publicKey)
二.技术点
1.使用同步获得秘钥
2.为了组件化,写个js组件
三.代码
1.同步写法(略)
2.js组件
/**
* 同步获得公钥,然后对输入的id添加blur事件进行rsa加密
* @param id
*/
rsaEn:function(id){
var $id = $("#"+id);
//防止多次触发事件,用unbind
$id.unbind("blur").bind("blur",function(){
var name = $id.attr("name");
var id_rsa = id+'_rsa';
if(name!=undefined) {
//还没生成加密元素
$id.removeAttr("name");
var rsahtm = "<input id='"+id+"_rsa"+"' type='hidden' name='"+name+"' value='' />";
$id.after(rsahtm);
}
var postUrl = .....;//异步路径
$.ajax({
type: "post",
url: postUrl ,
data: "",
dataType: "json",
async:false
success: function(data){
var publicKey = data.publicKey;//获得秘钥
var value = this.encrypt($id.val(),publicKey);//进行加密
$("#"+id_rsa).val(value);//赋值
}
});
},