class Gemnigma::Decrypt
Public Class Methods
new()
click to toggle source
# File lib/Gemnigma/decrypt.rb, line 7 def initialize @messages = Messages.new end
Public Instance Methods
get_cmd_args()
click to toggle source
# File lib/Gemnigma/decrypt.rb, line 11 def get_cmd_args if ARGV.length < 5 @messages.few_args return end if ARGV.length == 5 @input_file = ARGV[1] @output_file = ARGV[2] @secret_key = ARGV[3] @date_gen = ARGV[4] validate { decrypt_file(@input_file, @output_file,@secret_key,@date_gen) } end if ARGV.length > 5 @messages.too_much_args return end end
Private Instance Methods
decrypt_file(input, output, key, date)
click to toggle source
# File lib/Gemnigma/decrypt.rb, line 42 def decrypt_file(input, output, key, date) unless true_key?(key) puts "#{key} doesn't match the specified key format" puts "Exiting..." return end unless true_date?(date) puts "#{date} doesn't match the specified date format" puts "Exiting..." return end encrypted_file = File.open(input, "r+") decrypted_file = File.open(output, "w+") input_content = encrypted_file.read decrypt = RotatorDecrypt.new(Key.new(key.to_i)) decrypted_file.write(decrypt.rot_decrypt(input_content)) encrypted_file.close decrypted_file.close @messages.success_message(@output_file, @secret_key, @date_gen) end
true_date?(date)
click to toggle source
# File lib/Gemnigma/decrypt.rb, line 38 def true_date?(date) (date.to_i ** 2).to_s.chars.last(4).map(&:to_i) == Offset.new.offset end
true_key?(key)
click to toggle source
# File lib/Gemnigma/decrypt.rb, line 34 def true_key?(key) key.length == 5 && key.match(/\d\d\d\d\d/) ? true : false end