Class: BinData::Transform::Xor
- Inherits:
-
IO::Transform
- Object
- IO::Transform
- BinData::Transform::Xor
- Defined in:
- lib/bindata/transform/xor.rb
Overview
Transforms the data stream by xoring each byte.
Instance Method Summary collapse
-
#initialize(xor) ⇒ Xor
constructor
A new instance of Xor.
- #read(n) ⇒ Object
- #write(data) ⇒ Object
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 |