通过Discuz Passport集成Discuz论坛所用到的加密函数


function passport_encrypt(txt, key) {
//不能传入整数,要传入字符串
var random = ''+parseInt(Math.random()*32000);
var encrypt_key = hex_md5(random);

var ctr = 0;
var tmp = '';
for(var i = 0;i < txt.length; i++) {
if(encrypt_key.length == ctr)
ctr = 0;
tmp += encrypt_key.charAt(ctr)+String.fromCharCode(txt.charCodeAt(i) ^ encrypt_key.charCodeAt(ctr++));
}
return base64_encode(passport_key(tmp, key));
}

function passport_decrypt(txt, key) {
txt = passport_key(base64_decode(txt), key);
var tmp = '';
for(var i = 0;i < txt.length; i++) {
tmp += String.fromCharCode(txt.charCodeAt(i) ^ txt.charCodeAt(++i));
}
return tmp;
}

function passport_key(txt, encrypt_key) {
encrypt_key = hex_md5(encrypt_key);
var ctr = 0;
var tmp = '';
for(var i = 0; i < txt.length; i++) {
if(encrypt_key.length == ctr)
ctr = 0;
tmp += String.fromCharCode(txt.charCodeAt(i) ^ encrypt_key.charCodeAt(ctr++));
}
return tmp;
}
posted @ 2010-11-18 09:15  一路向end  阅读(232)  评论(0编辑  收藏  举报