Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- a = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя_.,'
- class Polibiy:
- def normalize(mes):
- """ Приведение открытого сообщения к стандартному виду """
- mes = mes.lower()
- m = ''
- for i in range(len(mes)):
- if mes[i] in a:
- m += mes[i]
- return m
- def alphabet():
- """ Заполнение квадрата Полибия """
- alphabet = []
- m = 0
- for i in range(7):
- alphabet.append([])
- if i == 0:
- alphabet[i].append(' ')
- for j in range(1,7):
- alphabet[i].append(str(j))
- print(alphabet[i])
- continue
- alphabet[i].append(str(i))
- for j in range(6):
- alphabet[i].append(a[m])
- m += 1
- print(alphabet[i])
- return alphabet
- def alphabet_with_key():
- k = str(input("Введите ключ: "))
- a_with_key = ''
- for i in range(len(k)):
- if k[i] not in a_with_key:
- a_with_key += k[i]
- for i in range(len(a)):
- if a[i] not in a_with_key:
- a_with_key += a[i]
- alphabet = []
- m = 0
- for i in range(7):
- alphabet.append([])
- if i == 0:
- alphabet[i].append(' ')
- for j in range(1,7):
- alphabet[i].append(str(j))
- print(alphabet[i])
- continue
- alphabet[i].append(str(i))
- for j in range(6):
- alphabet[i].append(a_with_key[m])
- m += 1
- print(alphabet[i])
- return alphabet
- def crypt1():
- """ Функция шифрования квадрата Полибия с помощью сдвига по таблице вниз на символ """
- menu = str(input("Ключевое слово? y/n: "))
- print("_______________________")
- if menu == 'y' or menu == 'Y':
- alphabet = Polibiy.alphabet_with_key()
- elif menu == 'n'or menu == 'N':
- alphabet = Polibiy.alphabet()
- mes = str(input("Введите открытое сообщение: "))
- mes = Polibiy.normalize(mes)
- print("_______________________")
- c = ''
- for m in range(len(mes)):
- for i in range(7):
- for j in range(7):
- if mes[m] == alphabet[i][j]:
- if i + 1 == 7:
- i = 0
- c += alphabet[i + 1][j]
- i = 6
- j = 6
- continue
- continue
- return c
- def decrypt1():
- """ Функция дешифрования квадрата Полибия с помощью сдвига по таблице вверх на символ """
- menu = str(input("Ключевое слово? y/n: "))
- print("_______________________")
- if menu == 'y' or menu == 'Y':
- alphabet = Polibiy.alphabet_with_key()
- elif menu == 'n'or menu == 'N':
- alphabet = Polibiy.alphabet()
- mes = str(input("Введите шифртекст: "))
- print("_______________________")
- c = ''
- for m in range(len(mes)):
- for i in range(7):
- for j in range(7):
- if mes[m] == alphabet[i][j]:
- if i - 1 == 0:
- i = 7
- c += alphabet[i - 1][j]
- i = 6
- j = 6
- continue
- continue
- return c
- def crypt2():
- """ Функция шифрования квадрата Полибия с помощью перестановки индексов символов """
- menu = str(input("Ключевое слово? y/n: "))
- print("_______________________")
- if menu == 'y' or menu == 'Y':
- alphabet = Polibiy.alphabet_with_key()
- elif menu == 'n'or menu == 'N':
- alphabet = Polibiy.alphabet()
- mes = str(input("Введите открытое сообщение: "))
- mes = Polibiy.normalize(mes)
- print("_______________________")
- c = ''
- index_c = []
- for m in range(len(mes)):
- for i in range(7):
- for j in range(7):
- if mes[m] == alphabet[i][j]:
- index_c.append(i)
- i = 6
- j = 6
- continue
- continue
- for m in range(len(mes)):
- for i in range(7):
- for j in range(7):
- if mes[m] == alphabet[i][j]:
- index_c.append(j)
- i = 6
- j = 6
- continue
- continue
- i = 0
- while i < len(index_c) - 1:
- c += alphabet[index_c[i]][index_c[i + 1]]
- i += 2
- return c
- def decrypt2():
- """ Функция дешифрования квадрата Полибия с помощью перестановки индексов символов """
- menu = str(input("Ключевое слово? y/n: "))
- print("_______________________")
- if menu == 'y' or menu == 'Y':
- alphabet = Polibiy.alphabet_with_key()
- elif menu == 'n'or menu == 'N':
- alphabet = Polibiy.alphabet()
- c = str(input("Введите шифртекст: "))
- print("_______________________")
- mes = ''
- index_c = []
- for m in range(len(c)):
- for i in range(7):
- for j in range(7):
- if c[m] == alphabet[i][j]:
- index_c.append(i)
- index_c.append(j)
- i = 6
- j = 6
- continue
- continue
- index_m = []
- for i in range(len(index_c) // 2):
- index_m.append(index_c[i])
- index_m.append(index_c[len(index_c) // 2 + i])
- i = 0
- while i < len(index_m) - 1:
- mes += alphabet[index_m[i]][index_m[i + 1]]
- i += 2
- return mes
- def crypt3():
- """ Функция шифрования квадрата Полибия с помощью перестановки первого и последнего индексов символов """
- menu = str(input("Ключевое слово? y/n: "))
- print("_______________________")
- if menu == 'y' or menu == 'Y':
- alphabet = Polibiy.alphabet_with_key()
- elif menu == 'n'or menu == 'N':
- alphabet = Polibiy.alphabet()
- mes = str(input("Введите открытое сообщение: "))
- mes = Polibiy.normalize(mes)
- print("_______________________")
- c = ''
- index_c = []
- for m in range(len(mes)):
- for i in range(7):
- for j in range(7):
- if mes[m] == alphabet[i][j]:
- index_c.append(i)
- index_c.append(j)
- i = 6
- j = 6
- continue
- continue
- ind = index_c[0]
- del(index_c[0])
- index_c.append(ind)
- i = 0
- while i < len(index_c) - 1:
- c += alphabet[index_c[i]][index_c[i + 1]]
- i += 2
- return c
- def decrypt3():
- """ Функция дешифрования квадрата Полибия с помощью перестановки первого и последнего индексов символов """
- menu = str(input("Ключевое слово? y/n: "))
- print("_______________________")
- if menu == 'y' or menu == 'Y':
- alphabet = Polibiy.alphabet_with_key()
- elif menu == 'n'or menu == 'N':
- alphabet = Polibiy.alphabet()
- c = str(input("Введите шифртекст: "))
- print("_______________________")
- mes = ''
- index_c = []
- for m in range(len(c)):
- for i in range(7):
- for j in range(7):
- if c[m] == alphabet[i][j]:
- index_c.append(i)
- index_c.append(j)
- i = 6
- j = 6
- continue
- continue
- index_m = []
- index_m.append(index_c[-1])
- for i in range(len(index_c) - 1):
- index_m.append(index_c[i])
- i = 0
- while i < len(index_m) - 1:
- mes += alphabet[index_m[i]][index_m[i + 1]]
- i += 2
- return mes
- print("ШИФР КВАДРАТ ПОЛИБИЯ...")
- print("_______________________")
- print("1. Шифрование")
- print("2. Дешифрование")
- print("_______________________")
- menu = int(input("Выберите функцию: "))
- print("_______________________")
- if menu == 1:
- menu = int(input("Выберите способ 1/2/3: "))
- print("_______________________")
- if menu == 1:
- print(Polibiy.crypt1())
- elif menu == 2:
- print(Polibiy.crypt2())
- elif menu == 3:
- print(Polibiy.crypt3())
- elif menu == 2:
- menu = int(input("Выберите способ 1/2/3: "))
- print("_______________________")
- if menu == 1:
- print(Polibiy.decrypt1())
- elif menu == 2:
- print(Polibiy.decrypt2())
- elif menu == 3:
- print(Polibiy.decrypt3())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement