class Ciphr::Functions::Crypto::RC4Cipher
Public Class Methods
params()
click to toggle source
# File lib/ciphr/functions/crypto.rb, line 38 def self.params [:input, :key] end
variants()
click to toggle source
# File lib/ciphr/functions/crypto.rb, line 34 def self.variants [[['rc4-ruby'],{}]] end
Public Instance Methods
apply()
click to toggle source
# File lib/ciphr/functions/crypto.rb, line 3 def apply input, key = @args keybytes = key.read.unpack('c*') s = (0..255).to_a j = 0 (0..255).each do |i| j = (j + s[i] + keybytes[i % keybytes.size]) % 256 swp = s[i] s[i] = s[j] s[j] = swp end i = 0 j = 0 Proc.new do byte = input.read(1) if byte i = (i + 1) % 256 j = (j + s[i]) % 256 swp = s[i] s[i] = s[j] s[j] = swp k = s[(s[i] + s[j]) % 256] m = [(byte.unpack('c*')[0] ^ k)].pack('c*') m else nil end end end