# File lib/prawn/arcfour.rb, line 12
  def initialize(key)
    # Convert string key to Array of integers
    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
    end
    s2 = s2[0, 256]

    # 4. Set j to zero and initialize the S-box
    j = 0
    (0..255).each do |i|
      j = (j + @sbox[i] + s2[i]) % 256
      @sbox[i], @sbox[j] = @sbox[j], @sbox[i]
    end

    @i = @j = 0
  end