Skip to content

Instantly share code, notes, and snippets.

@maxinspace
Created May 17, 2015 07:43
Show Gist options
  • Save maxinspace/99e1dbd78c3591fe06a1 to your computer and use it in GitHub Desktop.
Save maxinspace/99e1dbd78c3591fe06a1 to your computer and use it in GitHub Desktop.
class CipherKey
ALPHABET = %w(а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я)
def initialize()
end
def create_table
table = ALPHABET << " "
new_table = table.shuffle
write("key.txt", table.join(""))
add("key.txt", "\n")
add("key.txt", new_table.join(""))
end
def read_table
table = read("key.txt").gsub("\n", "")
keys = table[0, 33].split("")
values = table[34, 68].split("")
hashie = keys.zip(values)
end
private
def read(filename)
FileAccessor.new(filename).read()
end
def write(filename, content)
FileAccessor.new(filename).write(content)
end
def add(filename, content)
FileAccessor.new(filename).add(content)
end
end
class FileAccessor
attr_reader :filename
def initialize(filename)
@filename = filename
end
def read
File.read(filename)
end
def write(content)
File.open(filename, 'w+') { |f| f.write(content) }
end
def add(content)
File.open(filename, 'a') { |f| f.write(content) }
end
end
class CryptoEncryptor
attr_reader :text
def initialize(text)
@text = text
end
def encrypt
get_text.each_char do |char|
result += encrypt_letter(char)
end
FileAccessor.new("encrypted_text.txt").write(result)
end
def crypt
result = ""
get_text.each_char do |char|
result + encrypt_letter(char)
end
FileAccessor.new("crypted_text.txt").write(result)
end
# private
def crypt_letter(letter)
get_table.each do |pair|
return pair.last if pair.first == letter.lowercase
end
end
def encrypt_letter(letter)
get_table.each do |pair|
return pair.first if pair.last == letter
end
end
def get_text
FileAccessor.new(text).read().gsub("\n", "")
end
def get_table
CipherKey.new().read_table()
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment