Class: BinData::Transform::Xor

Inherits:
IO::Transform show all
Defined in:
lib/bindata/transform/xor.rb

Overview

Transforms the data stream by xoring each byte.

Instance Method Summary collapse

Methods inherited from IO::Transform

#after_read_transform, #after_write_transform, #before_transform, #num_bytes_remaining, #offset, #prepend_to_chain, #seek_abs, #seekable?, #skip, transform_changes_stream_length!

Constructor Details

#initialize(xor) ⇒ Xor

Returns a new instance of Xor.



5
6
7
8
# File 'lib/bindata/transform/xor.rb', line 5

def initialize(xor)
  super()
  @xor = xor
end

Instance Method Details

#read(n) ⇒ Object



10
11
12
# File 'lib/bindata/transform/xor.rb', line 10

def read(n)
  chain_read(n).bytes.map { |byte| (byte ^ @xor).chr }.join
end

#write(data) ⇒ Object



14
15
16
# File 'lib/bindata/transform/xor.rb', line 14

def write(data)
  chain_write(data.bytes.map { |byte| (byte ^ @xor).chr }.join)
end