Sha256: c1dc443d157580de8c362365d9da6b081d024207dad07ba7d62ac2c0d097abd3

Contents?: true

Size: 591 Bytes

Versions: 4

Compression:

Stored size: 591 Bytes

Contents

# -*- coding: binary -*-

module Rex
  module Text

    # Returns a XOR'd string.
    #
    # @param key [String] XOR key.
    # @param value [String] The string to XOR.
    # @return [String] An XOR'd string.
    def self.xor(key, value)
      xor_key = key.kind_of?(Integer) || key.nil? ? key.to_i : key.to_i(16)
      unless xor_key.between?(0, 255)
        raise ArgumentError, 'XOR key should be between 0x00 to 0x0f'
      end

      buf = ''

      value.each_byte do |byte|
        xor_byte = byte ^ xor_key
        buf << [xor_byte].pack('c')
      end

      buf
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rex-text-0.2.21 lib/rex/text/xor.rb
rex-text-0.2.20 lib/rex/text/xor.rb
rex-text-0.2.19 lib/rex/text/xor.rb
rex-text-0.2.18 lib/rex/text/xor.rb