V
V
vvvvr vvvvr2020-05-26 12:42:20
Python
vvvvr vvvvr, 2020-05-26 12:42:20

How to fit the equation for double permutation encryption?

How to adjust the equation for encryption so that everything is encrypted correctly?
Here is the equation: 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)

Answer the question

In order to leave comments, you need to log in

1 answer(s)
A
Alan Gibizov, 2020-05-27
@vvvvr

Sorry, the code is not a fountain, well, as best I can.

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)

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question