postgrelsql base64加密,JS base64解密

 项目中做云桌面对接,需要在项目中查出用户的明文密码,拼接到云桌面登陆地址中,防止明文传输,做了base64加密解密,防止小白黑客盗取用户密码。

 

postgrelsql base64加密SQL语句:

查询用户证件号码后四位,base64加密的密码

 SELECT 
	substr(idno, length(idno) - 3) idno,
	ENCODE(cast(password as bytea),'base64') xm
FROM security.oauth_user 
WHERE id  = #{USERPK}

 

JS代码:

模拟post请求,云桌面需要Post请求模拟登陆,其他系统以get方式

 /*
     *功能: 模拟form表单的提交
     *参数: URL 跳转地址 
     *     PARAMTERS 参数
     *     METHOD post或者get
     */
     function postUrl(URL, PARAMTERS,METHOD) {
         //创建form表单
         var temp_form = document.createElement("form");
         temp_form.action = URL;
         //如需打开新窗口,form的target属性要设置为'_blank'
         temp_form.target = "_blank";
         temp_form.method = METHOD;
         temp_form.style.display = "none";
         //添加参数
         for (var item in PARAMTERS) {
             var opt = document.createElement("textarea");
             opt.name = PARAMTERS[item].name;
             opt.value = PARAMTERS[item].value;
             temp_form.appendChild(opt);
         }
         document.body.appendChild(temp_form);
         //提交数据
         temp_form.submit();
     }

 

 //打开APP链接
     $scope.openUrl = function(app){
         var parames = new Array();
         var method = "get";
         if(app.name == "云桌面" || app.id == "ebe6132d-cbcc-4349-aa36-5810fa55c048"){
            var username = $scope.userInfo.pinyin + $scope.userInfo.idno;
            var pwd = window.atob($scope.userInfo.pwd);
            parames.push({ name: "login", value: username});
            parames.push({ name: "passwd", value: pwd});
            method = "post";
         }
         
         postUrl(app.url, parames,method);
     }

 

 

 

补充:

从IE10+浏览器开始,所有浏览器就原生提供了Base64编码、解码方法,不仅可以用于浏览器环境,Service Worker环境也可以使用。
方法名就是 atob 和 btoa ,具体语法如下:

window.btoa('china is so nb') // 编码
"Y2hpbmEgaXMgc28gbmI="
window.atob("Y2hpbmEgaXMgc28gbmI=") // 解码
"china is so nb"

 

 

 

开源的base64.js(https://github.com/dankogai/js-base64) ,使用很简单,浏览器引入该JS文件,然后Base64编码这样:

Base64.encode('china is so nb'); // 编码
"Y2hpbmEgaXMgc28gbmI="
Base64.decode("Y2hpbmEgaXMgc28gbmI="); // 解码
'china is so nb'

 

posted @ 2019-11-07 14:18  _小豪豪  阅读(1442)  评论(0编辑  收藏  举报