Шифрование двойной перестановкой python

Двойные перестановки шифр — 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 («Уравнение правильное. Напишите мне.»)

Читайте также:  Java переменное число параметров

#ТОЖЕ ДЛЯ ВАС
text = decode(u’ТЮАЕООГМРЛИПОЬСВ’, xkeys, ykeys)#Как должна проходть расшифровка
print(text)

Источник

Шифр Двойные перестановки

Всем привет, помогите пожалуйста реализовать программу на python, шифр двойные перестановки, буду очень благодарен.

Шифр вертикальной перестановки
нужно реализовать шифровку и дешифровку вертикальной перестановкой по ключу который вводит.

Шифр одиночной перестановки по ключевому слову
Помогите пожалуйста написать код на питоне Ключевое слово — Контроль Фраза — Здесь сокрыто.

Шифр перестановки
Нужна программа, которая будет выполнять шифр перестановки и выполнять расшифровку.

Шифр перестановки
Привет, помогите пожалуйста с этой задачей: Написать код шифрующий сообщение написанное на.

Шифр перестановки
Здравствуйте! Несколько дней уже сижу и никак не могу найти ошибку в блоке дешифрования текста.

Эксперт Python

ЦитатаСообщение от vrrrr Посмотреть сообщение

все это пишут, чтобы это значило?)))

ЦитатаСообщение от vrrrr Посмотреть сообщение

Эксперт функциональных языков программированияЭксперт Python

Эксперт Python

ЦитатаСообщение от 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, шифр двойные перестановки, буду.

Эксперт PythonЭксперт Java

ЦитатаСообщение от Rottbauer Посмотреть сообщение

Эксперт по компьютерным сетямЭксперт Pascal/Delphi

ЦитатаСообщение от 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)

Источник

Оцените статью