class EnigmaEncrypto::Decrypt
Public Class Methods
new()
click to toggle source
# File lib/enigma_encrypto/decrypt.rb, line 7 def initialize @file_handler = FileHandler.new @rotator = Rotator.new @rotation_num_gen = RotationNumGen.new end
Public Instance Methods
action()
click to toggle source
# File lib/enigma_encrypto/decrypt.rb, line 43 def action exit if !get_command_args exit if !check_command_args decrypt puts "Decrypted #{@decrypted} with the key #{@key} and date #{@date}" end
check_command_args()
click to toggle source
# File lib/enigma_encrypto/decrypt.rb, line 25 def check_command_args if ("%05d" % (@key.to_i)).size != 5 || ("%06d" % (@date.to_i)).size != 6 puts "Incorrect key or date entered" return false; end operation = @file_handler.check_file_useability(@encrypted, @decrypted) return false if operation == false || operation == "c" File.truncate(@decrypted, 0) if operation == "w" true end
decrypt()
click to toggle source
# File lib/enigma_encrypto/decrypt.rb, line 35 def decrypt @reverse_array = @rotation_num_gen.reverse_num_array(@key, @date) @opened_msg = @file_handler.read(@encrypted) length = @opened_msg.size decrypt_message(length) @opened_msg.close end
get_command_args()
click to toggle source
# File lib/enigma_encrypto/decrypt.rb, line 13 def get_command_args if ARGV.length != 4 puts "Oooops!\nIncorrect number of arguments supplied.\nTry again." return false else @encrypted = ARGV[0] @decrypted = ARGV[1] @key = ARGV[2] @date = ARGV[3] end end
Private Instance Methods
decrypt_message(length)
click to toggle source
# File lib/enigma_encrypto/decrypt.rb, line 52 def decrypt_message(length) reverse_num_index = 0 while length > 0 character_in_msg = @opened_msg.getc reverse_msg(character_in_msg, reverse_num_index) reverse_num_index += 1 reverse_num_index = 0 if reverse_num_index == 4 length -= 1 end end
reverse_msg(character, index)
click to toggle source
# File lib/enigma_encrypto/decrypt.rb, line 63 def reverse_msg(character, index) reversed_char = @rotator.reverse_text(character, @reverse_array[index]) @file_handler.writer(@decrypted, reversed_char) end