- Двойные перестановки шифр — Python — Ответ 14589123
- Шифр Двойные перестановки
- Saved searches
- Use saved searches to filter your results more quickly
- nAPoBo3uK/Permutation-cipher
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- Шифр перестановки
- Шифрование методом перестановки
Двойные перестановки шифр — Python — Ответ 14589123
Всем привет, помогите реализовать шифр двойной перестановки работает он так
Кратко об алгоритме:
Ключом к шифру двойной перестановки служит последовательность номеров столбцов и номеров строк исходной таблицы.
Имеется код, он полностью рабочий, но шифрует не правильно не могу подогнать уравнение так что бы он зашифровал правильно ,вот уравнение 4*(int(y)-1)+(int(x)-1). Расшифровывает все верно, извините за кашу, но не знаю как обернуть в код
def encode(text, xkeys, ykeys):#Перемешивание букв по ключам
return ».join(text[4*(int(y)-1)+(int(x)-1)] for y in ykeys for x in xkeys)#Высчитыывание позиции символа, который будет добавлен в переменную как шифрованный символ
def decode(text, xkeys, ykeys):#Расстановка перемешанных букв на свои места
return ».join(text[4*(int(y)-1)+(int(x)-1)] for y in ykeys for x in xkeys) #Высчитыывание позиции символа, который будет добавлен в переменную как символ открытого текста
xkeys = «4132»#Ключ для х в строке
ykeys = «3142»#Ключ для y в строке
#Вывод ключей на экран
print (xkeys)
print (ykeys)
ciphertext = encode(u’ПРИЛЕТАЮВОСЬМОГО’, xkeys, ykeys)#Объявление переменной, которая будет равна результату исполнения функции encode
if ciphertext != «ТЮАЕООГМРЛИПОЬСВ»:#Проверка на правильность работы ЧИСТО ДЛЯ ВАС ********************
print(ciphertext)
print («Уравненпие не верно, подгоняйте дальше. «)
else:
print(ciphertext)
print («Уравнение правильное. Напишите мне.»)
text = decode(ciphertext, xkeys, ykeys)#Объявление переменной, которая будет равна результату исполнения функции decode
if text != «ПРИЛЕТАЮВОСЬМОГО»:#Проверка на правильность работы ЧИСТО ДЛЯ ВАС ********************
print(text)
print («Кодированый текст не правильно расшифровался, подгоняйте encode дальше. «)
else:
print(ciphertext)
print («Уравнение правильное. Напишите мне.»)
#ТОЖЕ ДЛЯ ВАС
text = decode(u’ТЮАЕООГМРЛИПОЬСВ’, xkeys, ykeys)#Как должна проходть расшифровка
print(text)
Шифр Двойные перестановки
Всем привет, помогите пожалуйста реализовать программу на python, шифр двойные перестановки, буду очень благодарен.
Шифр вертикальной перестановки
нужно реализовать шифровку и дешифровку вертикальной перестановкой по ключу который вводит.
Шифр одиночной перестановки по ключевому слову
Помогите пожалуйста написать код на питоне Ключевое слово — Контроль Фраза — Здесь сокрыто.
Шифр перестановки
Нужна программа, которая будет выполнять шифр перестановки и выполнять расшифровку.
Шифр перестановки
Привет, помогите пожалуйста с этой задачей: Написать код шифрующий сообщение написанное на.
Шифр перестановки
Здравствуйте! Несколько дней уже сижу и никак не могу найти ошибку в блоке дешифрования текста.
Сообщение от vrrrr
все это пишут, чтобы это значило?)))
Сообщение от vrrrr
Сообщение от vrrrr
from math import ceil from random import shuffle s = list('двойная перестановка') s1 = round(len(s)**0.5) s2 = ceil(len(s)**0.5) a = [[s.pop(0) if s else ' ' for _ in range(s1)] for _ in range(s2)] shuffle(a) a = list(map(list,zip(*a))) shuffle(a) print(''.join([i for j in a for i in j]))
но почему-то внешним циклом считается первый написанный(for i in j, если смотреть последний пример)
Добавлено через 1 минуту
да, я нашел пример в этой статье , но всё-равно не понимаю логики
Сообщение от codcw
from math import ceil
from random import shuffle
s = list(‘двойная перестановка’)
s1 = round(len(s)**0.5)
s2 = ceil(len(s)**0.5)
a = [[s.pop(0) if s else ‘ ‘ for _ in range(s1)] for _ in range(s2)]
shuffle(a)
a = list(map(list,zip(*a)))
shuffle(a)
print(».join([i for j in a for i in j
Сообщение от codcw
Этот код шифрует по правилам шифра двойной перестановки?
Добавлено через 3 минуты
Сообщение от vrrrr
просто у меня есть код, а подогнать уравнение что бы оно верно шифровало у меня не выходит
def encode(text, xkeys, ykeys):
return ».join(text[4*(int(y)-1)+(int(x)-1)] for y in ykeys for x in xkeys)#ТУТ ПОДГОНЯТЬ УРАВНЕНИЕ ТАК, ЧТОБЫ ПРИ ШИФРОВКИ «ПРИЛЕТАЮВОСЬМОГО» ПОЛУЧАЛОСЬ «ТЮАЕООГМРЛИПОЬСВ»
def decode(text, xkeys, ykeys):
return ».join(text[4*(int(y)-1)+(int(x)-1)] for y in ykeys for x in xkeys) #ТУТ НИЧЕГО НЕ ИЗМЕНЯТЬ
ciphertext = encode(u’ПРИЛЕТАЮВОСЬМОГО’, xkeys, ykeys)#Надо чтобы результат этого шифрования был ТЮАЕООГМРЛИПОЬСВ. Для этого нужно изменять уравнение в def encode так, чтобы оно было обратным выражением тому, что в def decode.
if ciphertext != «ТЮАЕООГМРЛИПОЬСВ»:
print(ciphertext)
print («Уравненпие не верно, подгоняйте дальше. «)
else:
print(ciphertext)
print («Уравнение правильное. Напишите мне.»)
text = decode(ciphertext, xkeys, ykeys)
if text != «ПРИЛЕТАЮВОСЬМОГО»:
print(text)
print («Кодированый текст не правильно расшифровался, подгоняйте encode дальше. «)
else:
print(ciphertext)
print («Уравнение правильное. Напишите мне.»)
text = decode(u’ТЮАЕООГМРЛИПОЬСВ’, xkeys, ykeys)#Как должна проходть расшифровка
print(text)
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
nAPoBo3uK/Permutation-cipher
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Шифр двойной перестановки
Простейшая реализация шифра двойной перестановки на JS/HTML/CSS.
Сообщение посимвольно записывается в квадратную матрицу. Ключей два, каждый из которых представляет перечень позиций на которые должна быть осуществлена перестановка строк и столбцов соответственно. Сначала переставляются столбцы, потом строки. Шифротекст представляет собой запись строк матрицы разделённых пробелами, например: АЗЮЖ Е_СШ ГТОО ИПЕР
Особенности реализации:
- Пробелы исходного сообщения удаляются.
- Размер матрицы определяется исходя из длины ключей.
- Если сообщение короче чем необходимо для заполнения матрицы, пустые ячейки заполняются знаками подчёркивания ‘_’.
- Матрицы: исходная, перестановка столбцов и перестановка столбцов по завершении шифрования выводятся на экран.
Шифр перестановки
Привет, помогите пожалуйста с этой задачей:
Написать код шифрующий сообщение написанное на русском языке методом перестановки с заданным ключем ( Выбирается ключ, например цифра 4, Всем символам сообщения ставится число от 1 до 4 последовательно. Шифруемое сообщение представляет перестановку букв следующим образом: сначало букві с 1, затем с 2, затем с 3, и 4.)
К єтой хрени нужен еще и дешифратор а я понятия не имею как єто сделать, помогите пожалуйста..
Шифр перестановки
Нужна программа, которая будет выполнять шифр перестановки и выполнять расшифровку.
Шифр перестановки
Здравствуйте! Несколько дней уже сижу и никак не могу найти ошибку в блоке дешифрования текста.
Шифр табличной маршрутной перестановки
Задание Написать программу на языке программирования python которая шифрует и дешифрует.
Шифр Двойные перестановки
Всем привет, помогите пожалуйста реализовать программу на python, шифр двойные перестановки, буду.
Сообщение от Rottbauer
Сообщение от iSmokeJC
Сообщение от Rottbauer
Написать код шифрующий сообщение написанное на русском языке методом перестановки с заданным ключем ( Выбирается ключ, например цифра 4, Всем символам сообщения ставится число от 1 до 4 последовательно. Шифруемое сообщение представляет перестановку букв следующим образом: сначало букві с 1, затем с 2, затем с 3, и 4.)
К єтой хрени нужен еще и дешифратор а я понятия не имею как єто сделать, помогите пожалуйста..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
def decode(s:str, k:int=1): d = {x+1:'' for x in range(k)} c=0 v=1 h=(len(s)-(len(s)//k)*k) while(vh): for j in range((len(s)//k)+1): d[v] += s[j+c] c +=(len(s)//k)+1 v +=1 while(vk+1): for j in range((len(s)//k)): d[v] += s[j+c] c +=(len(s)//k) v +=1 x = [] c=0 while(c(len(s)//k)): for j in d.values(): x.append(j[c]) c+=1 for i in range(h): x.append(d[i+1][-1]) return ''.join(x) def encode(s:str, k:int=1): d = {x+1:'' for x in range(k)} for i in [s[0+x:k+x] for x in range(0, len(s), k)]: c = 1 for j in i: d[c] += j c += 1 return ''.join([x for x in d.values()]) strtocode = 'К єтой хрени нужен еще и дешифратор а я понятия не имею как єто сделать, помогите пожалуйста..' keycode = 3 print('Исходная строка:',strtocode,'Ключ:',keycode) print('Кодируем:',encode(strtocode,keycode)) print('Декодируем:',decode(encode(strtocode,keycode),keycode))
Исходная строка: К єтой хрени нужен еще и дешифратор а я понятия не имею как єто сделать, помогите пожалуйста.. Ключ: 3
Кодируем: Кт е ж е шроа ниниюає ет ми жут. охннее диар пяяем ктсльпотпайаєйриунщиефт яот ек ода,огеолс.
Декодируем: К єтой хрени нужен еще и дешифратор а я понятия не имею как єто сделать, помогите пожалуйста..
Шифрование методом перестановки
Здравствуйте! Перестановка по таблице. Размеры таблицы: 4 столбца на 5 строк. Ключ – последовательность заполнения строк таблицы (заполнение: по столбцам слева-направо сверху-вниз, результат: по строкам сверху-вниз слева-направо). Подскажите, как сделать так, чтобы вывод был не ЭЕДИТКЛФОСЯР_Т_ОТ_ШВ, а ЭЕДИТКЛФОСЯР_Т_ОТ_ШВАНИЯ, т.е. чтобы исходная строка (если символов в ней больше, чем элементов заданной матрицы) вписывалась в две матрицы (разбивалась на два блока). Еще желательно, чтобы программа шифровала строку из текстового файла.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
def encode(s): table = [[' '] * 4 for _ in range(5)] table_two = [[' '] * 4 for _ in range(5)] k = 0 for i in range(5): for j in range(4): table[i][j] = s[k] k += 1 if k == len(s): break k = 0 chars = ['\0'] * len(s) for j in range(4): for i in range(5): chars[k] = table[i][j] k += 1 return ''.join(chars).replace(' ', '_') def encode_two(s): table = [[' '] * 5 for _ in range(4)] k = 0 for i in range(4): for j in range(5): table[i][j] = s[k] k += 1 if k == len(s): break k = 0 chars = ['\0'] * len(s) for j in range(5): for i in range(4): chars[k] = table[i][j] k += 1 return ''.join(chars).replace(' ', '_') def switch(unit): if unit=="1": print(encode('ЭТО ТЕКСТ ДЛЯ ШИФРОВАНИЯ')) if unit=="2": print(encode_two('ЭТО ТЕКСТ ДЛЯ ШИФРОВАНИЯ')) while True: print("1-запись по строкам\n2-запись по столбцам") x=input() switch(x)