ruby网站改版.NET,大牛们来出个点子
因为业务需要,现在要用.NET来改版一个Ruby网站,首先做登录的时候就遇到了问题,
他原本的加密是
怎么样把这个方法翻译为 C#语言的?或者怎么样在C#中加密才能匹配的对,登录进去?
不知道我描述的清楚不,大家有经验的帮帮忙..
他原本的加密是
class Crypt
#discuz encrypt function
def self.encrypt(txt, key)
encrypt_key = Digest::MD5.hexdigest(rand(32000).to_s);
ctr = 0
tmp = ''
Range.new(0,txt.length-1).each do |i|
ctr = (ctr==encrypt_key.length ? 0 : ctr)
tmp += encrypt_key[ctr].chr+(txt[i] ^ encrypt_key[ctr]).chr
ctr = ctr+1
end
Base64.encode64(self.key(tmp,key));
end
def self.decrypt(txt,key)
txt = self.key(Base64.decode64(txt),key)
tmp = ''
0.step(txt.length-1,2) do |i|
data = txt[i] ^ txt[i+1]
tmp += data.chr
end
x = self.decode(tmp)
print x.inspect
x
end
def self.key(txt, encrypt_key)
encrypt_key = Digest::MD5.hexdigest(encrypt_key);
ctr = 0;
tmp = '';
0.upto(txt.length-1) do |i|
ctr = ctr==encrypt_key.length ? 0 : ctr
tmp += (txt[i] ^ encrypt_key[ctr]).chr
ctr = ctr+1
end
tmp
end
def self.encode(hash)
raise "passport encode must recieve a hash" unless hash.instance_of? Hash
str = []
hash.each do |key,value|
str << "#{key}="+CGI::escape(value.to_s)
end
str.join("&")
end
def self.decode(txt)
txt.gsub!(/.+\?/,'')
params = Hash.new([].freeze)
txt.split(/[&;]/n).each do |pairs|
key, value = pairs.split('=',2).collect{|v| CGI::unescape(v) }
key = key.to_sym
if params.has_key?(key)
params[key].push(value)
else
params[key] = value
end
end
params
end
#end discuz encrypt function
end
怎么样把这个方法翻译为 C#语言的?或者怎么样在C#中加密才能匹配的对,登录进去?
不知道我描述的清楚不,大家有经验的帮帮忙..
...全文
相关推荐
camsinko.net:camsinko.net网站
camsinko.net:camsinko.net网站
net-ssh远程访问linux ruby
ruby语言 远程访问 linux 这是一筐非常巴适的插件,可以通过它使ruby轻松访问linux
Dot Net程序员新方向 Ruby核心语法入门
本文的目的是为了找出为什么.NET程序员都想学习并使用Ruby,并探索Ruby语言的核心语法。
Java、.Net、PHP、Ruby优劣势概览
最近笔者学了一些PHP和Ruby的东西,就将Java、.Net、PHP、Ruby的应用做个比较。
vateud.net:VATEUD 欧洲分部网站
VATEUD.net 网站 现场版: : 用户指南 此应用与高度集成,无法独立运行。 学分 版权所有 :copyright: 2014 在下


