对于前台来说,储存用户注册的信息,当然不能以明文的方式写入数据库,这就用到了加密。
不废话,先贴我的前台js加密代码。
/*
*js的类名Encode.js
*基于base64的前台标准加密代码
*简单的写到js里,用的时候直接加载Encode.js类
*
*/
var base64encodechars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var encode={
base64encode:function(str) {
var out, i, len;
var c1, c2, c3;
len = str.length;
i = 0;
out = "";
while (i < len) {
c1 = str.charCodeAt(i++) & 0xff;
if (i == len) {
out += base64encodechars.charAt(c1 >> 2);
out += base64encodechars.charAt((c1 & 0x3) << 4);
out += "==";
break;
}
c2 = str.charCodeAt(i++);
if (i == len) {
out += base64encodechars.charAt(c1 >> 2);
out += base64encodechars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xf0) >> 4));
out += base64encodechars.charAt((c2 & 0xf) << 2);
out += "=";
break;
}
c3 = str.charCodeAt(i++);
out += base64encodechars.charAt(c1 >> 2);
out += base64encodechars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xf0) >> 4));
out += base64encodechars.charAt(((c2 & 0xf) << 2) | ((c3 & 0xc0) >> 6));
out += base64encodechars.charAt(c3 & 0x3f);
}
return out;
},
utf16to8:function(str) {
var out, i, len, c;
out = "";
len = str.length;
for (i = 0; i < len; i++) {
c = str.charCodeAt(i);
if ((c >= 0x0001) && (c <= 0x007f)) {
out += str.charAt(i);
} else if (c > 0x07ff) {
out += String.fromCharCode(0xe0 | ((c >> 12) & 0x0f));
out += String.fromCharCode(0x80 | ((c >> 6) & 0x3f));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3f));
} else {
out += String.fromCharCode(0xc0 | ((c >> 6) & 0x1f));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3f));
}
}
return out;
}
}
当然前后台数据交互用到了ajax,下面是ajax的js代码
/*
*js的类名Ajax.js
*用的时候直接加载Ajax.js
*参数大家根据需要自己增删
*
*/
var DataDeal = {
/* 功能 : 处理数据
* dbsrc : 用于扩展
* id : 总表 id,用于获取tableName,field等信息
* dtobj : 从前台获取的json数据
* url : 公共servlet的servlet
* data : 包含id和json数据
* method: 在后台要调用的方法
* return: reobj--从dervlet返回的数据
* ****************
* */
dealData: function (dbsrc,id, dtobj, method,succFunc) {
var vsJsonData="";
vsJsonData= { "id": id, "dataJson": dtobj ,"method":method};
var reobj;
$.ajax({
url: '../servlet/CommonServlet',
type: "post",
data: vsJsonData,
dataType: "json",
async: false,
success:
function (reval) {
if (typeof (succFunc) == 'function') {
succFunc(reval);
}
else {
reobj = reval;
}
下面就来发一下我ajax前后台数据交互的加密代码。
/*
*
*loginForm为我的Form的id
*name为用户名
*password为密码
*value为输入值
*
*/
DataDeal.dealData(
null,
"1",
"{\"name\":\""
+ loginForm.name.value
+ "\",\"password\":\""
+ encode.base64encode(encode.utf16to8(loginForm.password.value))
+ "\"}",
"add",
function(data) {
loginDialog.dialog('close');
alert(data.msg);
},
function() {
alert(data.msg);
}
);
大家如果还有什么疑问,可以直接回复我,我一定最快答复你。