Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Ш И Ф Р П О Д С Т А Н О В К И ( С Л О В О М ) #
- alf = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя_.,"
- alf1 = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя_,"
- mat = []
- key = []
- def obrabotka(k):
- '''функция обрабатывает ключ, убирает ненужные символы (повторяющиеся в слове)'''
- #alf = "абвгдеёжзийклмнопрстуфхцчшщъэюя"
- key = []
- for let in k:
- if let not in key:
- key.append(let)
- key = "".join(key)
- #print(key)
- return key
- def normalize1(mes):
- '''принимает строку, переводит в нижний регистр, удаляет символы, которых нет в условии'''
- #let - буква в слове
- #pr - одготовка строки с пробелами
- #mes - сообщение(любое)
- mes = mes.lower()#перевод строки в нижний резистр
- pr = ""
- #цикл для устранения пробелов из сообщения
- for let in mes:
- if let in alf1:
- pr += let
- return pr
- def normalize(mes):
- '''принимает строку, переводит в нижний регистр, удаляет символы, которых нет в условии'''
- #let - буква в слове
- #pr - одготовка строки с пробелами
- #mes - сообщение(любое)
- mes = mes.lower()#перевод строки в нижний резистр
- pr = ""
- #цикл для устранения пробелов из сообщения
- for let in mes:
- if let in alf:
- pr += let
- return pr
- def kluch(k):
- '''функция определяет последовательность ключа для шифрования/дешифрования'''
- key = []
- for let in k:
- if let not in key:
- key.append(let)
- #print(key)
- '''for let in range(len(k)):
- key += k[let]
- #print(key)'''
- key.sort()
- key = "".join(key)
- #key = sorted(k)
- #print(key)
- return key
- #key.sort()
- #key = "".join(key)
- def matrix(m,k):
- global S
- if len(m)%len(k) == 0:
- S = len(m)/len(k)
- else:
- S = ((len(m)/len(k)+1))
- #print(m,k)
- #print(int(S)+1,len(k))
- global mat
- mat = [["."] * (len(k)) for _ in range(int(S))]
- try:
- r = 0
- #i = 0
- for i in range(int(S)):
- #j = 0
- for j in range(len(k)):
- mat[i][j] = m[r]
- print(mat)
- r += 1
- #j += 1
- #i += 1
- #print("Полученная матрица ",mat)
- print()
- #print(podstanovka())
- return ""
- except IndexError:
- return ""
- def matrix1(m,k):
- global S
- if len(m)%len(k) == 0:
- S = len(m)/len(k)
- else:
- S = ((len(m)/len(k)+1))
- print(m,k)
- #print(int(S)+1,len(k))
- global mat
- mat = [["."] * (len(k)) for _ in range(int(S))]
- try:
- r = 0
- #i = 0
- for i in range(len(k)):
- #j = 0
- for j in range(int(S)):
- mat[j][i] = m[r]
- #print(mat)
- r += 1
- #j += 1
- #i += 1
- #print("Полученная матрица ",mat)
- print()
- #print(podstanovka())
- return ""
- except IndexError:
- return ""
- def cryptPODSTANOVKA_SLOVO(m,k):
- #m - открытое/закрытое сообщение (незашифрованное/незашифрованное)
- m = normalize(m)
- k = obrabotka(k)
- key = kluch(k)
- #print(key, k)
- #k = key(k)
- print(matrix(m,k))
- result = ""
- #for i in range((int(S)*len(k))):
- for n in range(len(k)):
- #for s in range(len(str(int(S)))):
- for s in range(int(S)):
- #print(mat[s][k.index(key[n])])
- result += mat[s][k.index(key[n])]
- #result += mat[i][k.index(key[i])]
- print("ВАШ ТЕКСТ: ",result)
- return ""
- def decryptPODSTANOVKA_SLOVO(m,k):
- #m - открытое/закрытое сообщение (незашифрованное/незашифрованное)
- m = normalize(m)
- k = obrabotka(k)
- key = kluch(k)
- #print(key, k)
- #k = key(k)
- print(matrix1(m,k))
- result = ""
- result1 = ""
- #for i in range((int(S)*len(k))):
- for n in range(int(S)):
- #for s in range(len(str(int(S)))):
- for s in range(len(k) ):
- #print(mat[s][k.index(key[n])])
- result += mat[n][key.index(k[s])]
- #result1 += mat[k.index(key[n])][s]
- #result += mat[i][k.index(key[i])]
- result = normalize1(result)
- print("ВАШ ТЕКСТ: ",result)
- #print("ВАШ ТЕКСТ: ",result1)
- return ""
- #=========================================================================================================================#
- # PODSTANOVKA_SLOVO #
- #=========================================================================================================================#
- def PODSTANOVKA_SLOVO():
- print()
- print("╔══════════════════════════════╗")
- print("║ ШИФР ПЕРЕСТАНОВКИ (ОБЫЧНЫЙ) ║")
- print("║══════════════════════════════║")
- print("║ 1 --- ЗАШИФРОВАТЬ СООБЩЕНИЕ ║")
- print("╠══════════════════════════════╣")
- print("║ 2 --- РАСШИФРОВАТЬ СООБЩЕНИЕ ║")
- print("╚══════════════════════════════╝")
- print()
- N = int(input("ВАШ ВЫБОР: "))
- if N == 1:
- print(cryptPODSTANOVKA_SLOVO(m = input("ВВЕДИТЕ ВАШЕ ОТКРЫТОЕ СООБЩЕНИЕ: "),k = input("ВВЕДИТЕ ВАШ КЛЮЧ (СЛОВО): ")))
- elif N == 2:
- print(decryptPODSTANOVKA_SLOVO(m = input("ВВЕДИТЕ ВАШЕ ОТКРЫТОЕ СООБЩЕНИЕ: "),k = input("ВВЕДИТЕ ВАШ КЛЮЧ (СЛОВО): ")))
- else:
- print("Вы выбрали неверный вариант =(")
- return ""
- #=========================================================================================================================#
- print(PODSTANOVKA_SLOVO())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement