Class: Tor257::Message

Inherits:
String
  • Object
show all
Defined in:
lib/tor257/core.rb

Overview

The message can be cut in 32 bits blocs

Instance Method Summary collapse

Instance Method Details

#decrypt(key) ⇒ Object



87
88
89
# File 'lib/tor257/core.rb', line 87

def decrypt(key)
  self.encrypt(key)
end

#encrypt(key) ⇒ Object

Raises:

  • (ArgumentError)


68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/tor257/core.rb', line 68

def encrypt(key)
  raise ArgumentError unless key.is_a? Key
  i = 0
  rotate_matrix = [1, 2, 4, 8]
  out = self.bytes.map do |b|
    skey = key.subkey(i)
    STDERR.write "[#{b}]\t+ [#{skey}\t>> #{rotate_matrix}]\t-> " if $verbose
    skey.each_with_index do |k|
      b = TOR257(b, k, rotate_matrix)
    end
    STDERR.write " [#{b}]\n" if $verbose
    i += 1
    rotate_matrix.rotate! 1 if i % 4 == 0 # bloc of 32
    b.chr
  end.join
  out = Message.new(out)
  out
end