@vvvvr

Как подогнать уравнение для шифрования двойной перестановки?

Как подогнать уравнение для шифрования так, чтобы шифровалось все правильно?
Вот это уравнение: 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"

print (xkeys)

print (ykeys)

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)
  • Вопрос задан
  • 145 просмотров
Решения вопроса 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Извини, код не фонтан, ну как умею.

def getnumber(x, y):
    return 4*(int(y)-1)+(int(x)-1)

def encode(text, xkeys, ykeys):
    counter = 0
    newtext = ['' for _ in range(len(text))]
    for y in ykeys:
        for x in xkeys:
            if counter < len(text):
                newtext[getnumber(x, y)] = text[counter]
                counter += 1
    return ''.join(newtext) #ТУТ ПОДГОНЯТЬ УРАВНЕНИЕ ТАК, ЧТОБЫ ПРИ ШИФРОВКИ "ПРИЛЕТАЮВОСЬМОГО" ПОЛУЧАЛОСЬ "ТЮАЕООГМРЛИПОЬСВ"

def decode(text, xkeys, ykeys):
    return) ''.join(text[getnumber(x, y)] for y in ykeys for x in xkeys)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы