Created
May 17, 2015 07:43
-
-
Save maxinspace/99e1dbd78c3591fe06a1 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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