赞 | 0 |
VIP | 2 |
好人卡 | 2 |
积分 | 1 |
经验 | 19578 |
最后登录 | 2016-1-22 |
在线时间 | 262 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 262 小时
- 注册时间
- 2009-1-10
- 帖子
- 309
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 PAME 于 2011-7-21 17:38 编辑
开发一个成就与排名功能要用RC4加密传输,在此帖询问无人回答,最后方法如下:(本人无RUBY基础。。居然看懂了。。。原来只懂Pascal、Delphi、易语言、RobotC。。。)- class RubyRc4
-
- def initialize(str)
- @q1, @q2 = 0, 0
- @key = []
- str.each_byte {|elem| @key << elem} while @key.size < 256
- @key.slice!([email protected]) if @key.size >= 256
- @s = (0..255).to_a
- j = 0
- 0.upto(255) do |i|
- j = (j + @s[i] + @key[i] )%256
- @s[i], @s[j] = @s[j], @s[i]
- end
- end
-
- def encrypt!(text)
- process text
- end
-
- def encrypt(text)
- process text.dup
- end
-
- private
- def process(text)
- 0.upto(text.length-1) {|i| text[i] = text[i] ^ round}
- text
- end
-
- def round
- @q1 = (@q1 + 1)%256
- @q2 = (@q2 + @s[@q1])%256
- @s[@q1], @s[@q2] = @s[@q2], @s[@q1]
- @s[(@s[@q1]+@s[@q2])%256]
- end
- end
复制代码 范例:- encryptor = RubyRc4.new('xxxx')
- encrypted_data = encryptor.encrypt('cccccccccccccc')
- File.open("1.txt","w") do |file|
- file.puts encrypted_data
- end
复制代码 以“xxxx”为密码加密“cccccccccccccc”,并保存才1.txt文件中
|
|