查看: 3094|回复: 4

[通用发布] RM的RC4加密 (无需dll)

[复制链接]
梦石
0
星屑
50
在线时间
262 小时
注册时间
2009-1-10
回帖
247
发表于 2011-7-13 21:07:31 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 PAME 于 2011-7-21 17:38 编辑

开发一个成就与排名功能要用RC4加密传输,在此帖询问无人回答,最后方法如下:(本人无RUBY基础。。居然看懂了。。。原来只懂Pascal、Delphi、易语言、RobotC。。。)
  1. class RubyRc4
  2.   
  3.   def initialize(str)
  4.     @q1, @q2 = 0, 0
  5.     @key = []
  6.     str.each_byte {|elem| @key << elem} while @key.size < 256
  7.     @key.slice!(256..@key.size-1) if @key.size >= 256
  8.     @s = (0..255).to_a
  9.     j = 0
  10.     0.upto(255) do |i|
  11.       j = (j + @s[i] + @key[i] )%256
  12.       @s[i], @s[j] = @s[j], @s[i]
  13.     end   
  14.   end
  15.    
  16.   def encrypt!(text)
  17.     process text
  18.   end  
  19.   
  20.   def encrypt(text)
  21.     process text.dup
  22.   end
  23.   
  24.   private

  25.   def process(text)
  26.     0.upto(text.length-1) {|i| text[i] = text[i] ^ round}
  27.     text
  28.   end
  29.   
  30.   def round
  31.     @q1 = (@q1 + 1)%256
  32.     @q2 = (@q2 + @s[@q1])%256
  33.     @s[@q1], @s[@q2] = @s[@q2], @s[@q1]
  34.     @s[(@s[@q1]+@s[@q2])%256]  
  35.   end
  36. end
复制代码
范例:
  1. encryptor = RubyRc4.new('xxxx')
  2. encrypted_data = encryptor.encrypt('cccccccccccccc')


  3. File.open("1.txt","w") do |file|  
  4.    file.puts encrypted_data

  5. end
复制代码
以“xxxx”为密码加密“cccccccccccccc”,并保存才1.txt文件中
梦石
0
星屑
7095
在线时间
1666 小时
注册时间
2008-10-29
回帖
6612

贵宾

发表于 2011-7-13 23:01:56 | 显示全部楼层
你就只帖了一个 class RubyRc4 ?











你知道得太多了

回复

使用道具 举报

梦石
0
星屑
1002
在线时间
1270 小时
注册时间
2011-2-14
回帖
5388
发表于 2011-7-14 08:28:51 | 显示全部楼层
没搞错吧,class后面的应该全部贴上了的
回复

使用道具 举报

梦石
0
星屑
50
在线时间
262 小时
注册时间
2009-1-10
回帖
247
 楼主| 发表于 2011-7-14 16:02:43 | 显示全部楼层
咦。非常抱歉,失误失误。修复了。(最近学校补课,迷迷糊糊的)
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
172
在线时间
935 小时
注册时间
2010-11-13
回帖
897
发表于 2011-7-21 11:59:29 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部