1. 程式人生 > >利用非同步寫js元件給密碼框進行加密

利用非同步寫js元件給密碼框進行加密

一.背景

    比如在使用者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);//賦值
					
                }
             });
        },