Class: Ratsel::Helpers

Inherits:
Object
  • Object
show all
Defined in:
lib/ratsel/helpers/helpers.rb

Class Method Summary collapse

Class Method Details

.get_differences(encrypted_message, end_char, offsets) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/ratsel/helpers/helpers.rb', line 36

def self.get_differences(encrypted_message, end_char, offsets)
  @character_map = Ratsel::Cipher.character_map
  differences = []

  4.times do |i|
    diff = (@character_map.index(encrypted_message[i]) -
    @character_map.index(end_char[i]))

    diff -= offsets[i].to_i
    differences[i] = diff.to_s.rjust(2, '0')
  end

  differences
end

.get_key(differences) ⇒ Object

Get encryption key



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/ratsel/helpers/helpers.rb', line 52

def self.get_key(differences)
  key_array = []
  differences.each_with_index do |value, index|
    break if index == differences.size - 1
    first_value = value
    second_value = differences[index + 1]

    compare(index, first_value, second_value, key_array, differences)
  end

  "%d%d%d%d" % [
    differences[0],
    differences[1][-1],
    differences[2][-1],
    differences[3][-1]
  ]
end

.offsets_array(date) ⇒ Object

Get offsets array from the date of message transmission



4
5
6
7
8
9
10
11
12
13
# File 'lib/ratsel/helpers/helpers.rb', line 4

def self.offsets_array(date)
  offsets_array = []
  date_square = date.to_i ** 2
  new_str = date_square.to_s.reverse
  new_str = new_str.slice!(0..3).reverse.split('')

  new_str.each { |str| offsets_array << str.to_i }

  offsets_array
end

.rotation_array(key) ⇒ Object

Get offsets from generated key



16
17
18
19
20
21
22
23
# File 'lib/ratsel/helpers/helpers.rb', line 16

def self.rotation_array(key)
  key_rotor_array = [] 
  key_array = key.split('')
    
  4.times { key_rotor_array << (key_array.shift + key_array[0]).to_i }

  key_rotor_array
end

.sum_rotation_offset(offsets, rotation_array) ⇒ Object

Sum of A - n rotation and A - n offsets



26
27
28
29
30
31
32
33
34
# File 'lib/ratsel/helpers/helpers.rb', line 26

def self.sum_rotation_offset(offsets, rotation_array)
  sum_array = []
  @offsets_array = offsets
  @rotation_array = rotation_array

  4.times { sum_array << @offsets_array.shift + @rotation_array.shift }

  sum_array
end