lib/prawn/security/arcfour.rb in prawn-1.0.0 vs lib/prawn/security/arcfour.rb in prawn-1.1.0
- old
+ new
@@ -1,5 +1,7 @@
+# encoding: utf-8
+
# Implementation of the "ARCFOUR" algorithm ("alleged RC4 (tm)"). Implemented
# as described at:
# http://www.mozilla.org/projects/security/pki/nss/draft-kaukonen-cipher-arcfour-03.txt
#
# "RC4" is a trademark of RSA Data Security, Inc.
@@ -15,11 +17,11 @@
key = key.unpack('c*') if key.is_a?(String)
# 1. Allocate an 256 element array of 8 bit bytes to be used as an S-box
# 2. Initialize the S-box. Fill each entry first with it's index
@sbox = (0..255).to_a
-
+
# 3. Fill another array of the same size (256) with the key, repeating
# bytes as necessary.
s2 = []
while s2.length < 256
s2 += key
@@ -37,10 +39,10 @@
end
def encrypt(string)
string.unpack('c*').map{|byte| byte ^ key_byte}.pack('c*')
end
-
+
private
# Produces the next byte of key material in the stream (3.2 Stream Generation)
def key_byte
@i = (@i + 1) % 256