Sha256: 53efeeea476033069407ccd5f3df13ebc44193e56a7fa9428b85a90c5b2560a6

Contents?: true

Size: 1.42 KB

Versions: 29

Compression:

Stored size: 1.42 KB

Contents

#--
# PDF::Writer for Ruby.
#   http://rubyforge.org/projects/ruby-pdf/
#   Copyright 2003 - 2005 Austin Ziegler.
#
#   Licensed under a MIT-style licence. See LICENCE in the main distribution
#   for full licensing information.
#
# $Id: arc4.rb 50 2005-05-16 03:59:21Z austin $
#++
require 'digest/md5'

  # ARC4 methods
  # A series of function to implement ARC4 encoding in Ruby
class PDF::Writer::ARC4
    # Initializes the ARC4 encryption with the specified key.
  def initialize(key)
    @key = key
  end

    # Initialize the encryption for processing a particular object.
  def prepare(object)
    hex = ("%06x" % [object.oid]).scan(/../).reverse
    init(Digest::MD5.digest("#{@key}#{hex.pack('H10')}")[0...10])
  end

    # Initialize the ARC4 encryption.
  def init(key)
    @arc4 = ""

      # Setup the control array
    return if key.empty?

    a = []
    (0..255).each { |ii| a[ii] = "%c" % ii }

    k = (key * 256)[0..255].split(//)

    jj = 0
    @arc4.each_with_index do |el, ii|
      jj = ((jj + el.to_i) + k[ii].to_i) % 256
      a[ii], a[jj] = a[jj], a[ii]
    end
    @arc4 = a.join
  end

    # ARC4 encrypt a text string
  def encrypt(text)
    len = text.size
    a = b = 0
    c = @arc4.dup
    out = ""

    text.each_byte do |x|
      a = (a + 1) % 256
      b = (b + c[a].to_i) % 256
      c[a], c[b] = c[b], c[a]
      k = (c[(c[a].to_i + c[b].to_i) % 256]).to_i
      out << ("%c" % (x.to_i ^ k))
    end
    out
  end
end

Version data entries

29 entries across 29 versions & 4 rubygems

Version Path
rhodes-7.6.0 lib/extensions/pdf-writer/pdf/writer/arc4.rb
rhodes-7.5.1 lib/extensions/pdf-writer/pdf/writer/arc4.rb
rhodes-7.4.1 lib/extensions/pdf-writer/pdf/writer/arc4.rb
rhodes-7.1.17 lib/extensions/pdf-writer/pdf/writer/arc4.rb
rhodes-6.2.0 lib/extensions/pdf-writer/pdf/writer/arc4.rb
rhodes-6.0.11 lib/extensions/pdf-writer/pdf/writer/arc4.rb
rhodes-5.5.18 lib/extensions/pdf-writer/pdf/writer/arc4.rb
rhodes-5.5.17 lib/extensions/pdf-writer/pdf/writer/arc4.rb
rhodes-5.5.15 lib/extensions/pdf-writer/pdf/writer/arc4.rb
rhodes-5.5.0.22 lib/extensions/pdf-writer/pdf/writer/arc4.rb
rhodes-5.5.2 lib/extensions/pdf-writer/pdf/writer/arc4.rb
rhodes-5.5.0.7 lib/extensions/pdf-writer/pdf/writer/arc4.rb
rhodes-5.5.0.3 lib/extensions/pdf-writer/pdf/writer/arc4.rb
rhodes-5.5.0 lib/extensions/pdf-writer/pdf/writer/arc4.rb
tauplatform-1.0.3 lib/extensions/pdf-writer/pdf/writer/arc4.rb
tauplatform-1.0.2 lib/extensions/pdf-writer/pdf/writer/arc4.rb
tauplatform-1.0.1 lib/extensions/pdf-writer/pdf/writer/arc4.rb
rhodes-3.5.1.12 lib/extensions/pdf-writer/pdf/writer/arc4.rb
rhodes-3.3.5 lib/extensions/pdf-writer/pdf/writer/arc4.rb
rhodes-3.4.2 lib/extensions/pdf-writer/pdf/writer/arc4.rb