Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def encode(msg, key, alpha):
- if alpha == "ukr":
- alphabet = [
- "а",
- "б",
- "в",
- "г",
- "ґ",
- "д",
- "е",
- "є",
- "ж",
- "з",
- "и",
- "і",
- "ї",
- "й",
- "к",
- "л",
- "м",
- "н",
- "о",
- "п",
- "р",
- "с",
- "т",
- "у",
- "ф",
- "х",
- "ц",
- "ч",
- "ш",
- "щ",
- "ь",
- "ю",
- "я",
- ]
- elif alpha == "en":
- alphabet = [
- "a",
- "b",
- "c",
- "d",
- "e",
- "f",
- "g",
- "h",
- "i",
- "j",
- "k",
- "l",
- "m",
- "n",
- "o",
- "p",
- "q",
- "r",
- "s",
- "t",
- "u",
- "v",
- "w",
- "x",
- "y",
- "z",
- ]
- else:
- raise TypeError("Не зрозуміла абетка")
- padded_key = key.ljust(9)
- my_list = [[0, 0, 9, 8, 7, 6, 5, 4, 3, 2, 1], [0] + list(padded_key) + [""]]
- encrypt_msg = ""
- counter = 1
- new_sublist = [counter]
- for letter in alphabet:
- if letter not in padded_key:
- new_sublist.append(letter)
- if len(new_sublist) - 1 == 10:
- my_list.append(new_sublist)
- counter += 1
- new_sublist = [counter]
- if len(new_sublist) > 1:
- my_list.append(new_sublist)
- counter = 2
- for charset in msg:
- if charset in my_list[1]:
- my_index = my_list[1].index(charset)
- encrypt_msg += str(my_list[0][my_index])
- continue
- for sublist_index in range(2, len(my_list)):
- if charset in my_list[sublist_index]:
- my_index = my_list[sublist_index].index(charset)
- encrypt_msg += f"{sublist_index - 1}{my_list[0][my_index]}"
- return encrypt_msg
- def decode(encrypt_msg, key, alpha):
- if alpha == "ukr":
- alphabet = [
- "а",
- "б",
- "в",
- "г",
- "ґ",
- "д",
- "е",
- "є",
- "ж",
- "з",
- "и",
- "і",
- "ї",
- "й",
- "к",
- "л",
- "м",
- "н",
- "о",
- "п",
- "р",
- "с",
- "т",
- "у",
- "ф",
- "х",
- "ц",
- "ч",
- "ш",
- "щ",
- "ь",
- "ю",
- "я",
- ]
- elif alpha == "en":
- alphabet = [
- "a",
- "b",
- "c",
- "d",
- "e",
- "f",
- "g",
- "h",
- "i",
- "j",
- "k",
- "l",
- "m",
- "n",
- "o",
- "p",
- "q",
- "r",
- "s",
- "t",
- "u",
- "v",
- "w",
- "x",
- "y",
- "z",
- ]
- else:
- raise TypeError("Не зрозуміла абетка")
- decrypt_msg = ""
- padded_key = key.ljust(9)
- my_list = [[0, 0, 9, 8, 7, 6, 5, 4, 3, 2, 1], [0] + list(padded_key) + [""]]
- counter = 1
- new_sublist = [counter]
- for letter in alphabet:
- if letter not in padded_key:
- new_sublist.append(letter)
- if len(new_sublist) - 1 == 10:
- my_list.append(new_sublist)
- counter += 1
- new_sublist = [counter]
- if len(new_sublist) > 1:
- my_list.append(new_sublist)
- def find_char(str, my_list):
- my_index = my_list[0].index(int(str[1]))
- if my_index == 0:
- my_index += 1
- if 0 < int(str[0]) + 1 < len(my_list) and 0 < my_index < len(my_list[0]):
- return my_list[int(str[0]) + 1][my_index]
- temp_char = ""
- check = False
- inside_conter = 0
- double_char = []
- for row in my_list[1:]:
- value = row[0]
- if int(value) != 0:
- double_char.append(value)
- # print(f"\n{encrypt_msg}\n")
- for char in encrypt_msg:
- if (int(char) in double_char) or check:
- temp_char += char
- inside_conter += 1
- if inside_conter == 2:
- check = False
- inside_conter = 0
- decrypt_msg += find_char(temp_char, my_list)
- temp_char = ""
- else:
- check = True
- else:
- index = my_list[0].index(int(char))
- if index == 0:
- index += 1
- decrypt_msg += my_list[1][index]
- return decrypt_msg
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement