ruby 写discuz加密方法
function passport_encrypt($txt, $key) {
srand((double)microtime() * 1000000);
$encrypt_key = md5(rand(0, 32000));
$ctr = 0;
$tmp = '';
for($i = 0;$i < strlen($txt); $i++) {
$ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;
$tmp .= $encrypt_key[$ctr].($txt[$i] ^ $encrypt_key[$ctr++]);
}
return base64_encode(passport_key($tmp, $key));
}
function passport_key($txt, $encrypt_key) {
$encrypt_key = md5($encrypt_key);
$ctr = 0;
$tmp = '';
for($i = 0; $i < strlen($txt); $i++) {
$ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;
$tmp .= $txt[$i] ^ $encrypt_key[$ctr++];
}
return $tmp;
}
下边是用ruby写的,不过有点错误,麻烦大家帮忙找下,郁闷几天了!
def encrypt(txt,key)
encrypt_key=Digest::MD5.hexdigest(rand(32000).to_s)
ctr=0
tmp=''
for i in (0..txt.length)
ctr = (ctr == encrypt_key.length ? 0 : ctr)
tmp += (encrypt_key[ctr].to_s+( txt[i] ^ encrypt_key[ctr]).to_s)
ctr+=1
end
return Base64.encode64(passport_key(tmp,key))
end
def passport_key(txt,key)
encrypt_key=Digest::MD5.hexdigest(key)
ctr=0
tmp=''
for i in (0..txt.length)
ctr= (ctr==encrypt_key.length ? 0 : ctr)
tmp += (txt[i] ^ encrypt_key[ctr]).to_s
ctr+=1
end
return tmp
end相关推荐
Discuz5.5.0代码高亮显示+运行代码框合成插件 下载第1/4页
Discuz5.5.0代码高亮显示+运行代码框合成插件 下载
Java、.Net、PHP、Ruby优劣势概览
最近笔者学了一些PHP和Ruby的东西,就将Java、.Net、PHP、Ruby的应用做个比较。
ruby开源社区软件 Rabel.zip
Rabel 是新一代开源社区软件,设计简洁,摒弃了传统论坛软件的臃肿功能,让论坛回归交流本质。 如果你厌倦了discuz!/phpwind,不妨试试 Rabel ! 标签:开源社区 论坛社区 开源论坛
高性能WEB服务器
本书系统地介绍了nginx与php、ruby、python结合的使用方法,nginx作为反向代理与负载均衡的配置与优化,以及nginx模块的开发方法,并给出了新浪播客、搜狐博客、六间房、discuz!官方论坛、迅雷在线、赶集网使用nginx的应用示例。最后全面地分析了nginx的核心模块。本书适合nginx的初学者,以及有一定基础,希望深入掌握nginx的网站架构师和web开发人员
实战Nginx:取代Apache的高性能Web服务器
本书系统地介绍了nginx与php、ruby、python结合的使用方法,nginx作为反向代理与负载均衡的配置与优化,以及nginx模块的开发方法,并给出了新浪播客、搜狐博客、六间房、discuz!官方论坛、迅雷在线、赶集网使用nginx的应用示例。最后全面地分析了nginx的核心模块。本书适合nginx的初学者,以及有一定基础,希望深入掌握nginx的网站架构师和web开发人员。



