class Pontifex::Cipher
Public Class Methods
new(str, deck_key=nil)
click to toggle source
# File lib/pontifex/cipher.rb, line 5 def initialize(str, deck_key=nil) @raw = str @keystream = deck_key.nil? ? KeyStream.new : KeyStream.new(deck_key) end
Public Instance Methods
decrypted()
click to toggle source
# File lib/pontifex/cipher.rb, line 28 def decrypted @keystream.sequence! processed = @raw.upcase.gsub(/[^A-Z]/, "") results = "" processed.each_char do |c| k = @keystream.letter if (c.ord - 64) <= (k.ord - 64) value = (c.ord - 64 + 26) - (k.ord - 64) else value = (c.ord - 64) - (k.ord - 64) end results << (value + 64).chr @keystream.sequence! end output_str = "" results.scan(/.{5}/).each_slice(5) { |s| output_str << s.join(" ") + "\n" } output_str.chomp end
encrypted()
click to toggle source
# File lib/pontifex/cipher.rb, line 10 def encrypted @keystream.sequence! processed = @raw.upcase.gsub(/[^A-Z]/, "") processed << "X" * (5 - (processed.length % 5)) unless (processed.length % 5) == 0 results = "" processed.each_char do |c| k = @keystream.letter value = (c.ord - 64) + (k.ord - 64) results << ((value > 26 ? value - 26 : value) + 64).chr @keystream.sequence! end output_str = "" results.scan(/.{5}/).each_slice(5) { |s| output_str << s.join(" ") + "\n" } output_str.chomp end