Project1

标题: RM的RC4加密 (无需dll) [打印本页]

作者: PAME    时间: 2011-7-13 21:07
标题: RM的RC4加密 (无需dll)
本帖最后由 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!([email protected]) 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文件中

作者: 后知后觉    时间: 2011-7-13 23:01
你就只帖了一个 class RubyRc4 ?
作者: R-零    时间: 2011-7-14 08:28
没搞错吧,class后面的应该全部贴上了的
作者: PAME    时间: 2011-7-14 16:02
咦。非常抱歉,失误失误。修复了。(最近学校补课,迷迷糊糊的)
作者: 574656549    时间: 2011-7-21 11:59
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1