Шифрование сообщений в Python - PullRequest
0 голосов
/ 09 ноября 2018

В этом задании мне нужно зашифровать сообщения на основе заданных ключей. Задача состоит в том, чтобы проиндексировать ключ к алфавиту и заставить это изменение заменить буквы в сообщениях. Код, который у меня пока есть:

def encode(key,plaintext):

    for i in key:
        key.index(i)
    for i in plaintext:
        print(plaintext.index(i))

    alpha = ["abcdefghijklmnopqrstuvwxyz"]




def main():

    plaintextMessages = [
        ["This is the plaintext message.",
         "bcdefghijklmnopqrstuvwxyza"],
        ["Let the Wookiee win!",
         "epqomxuagrdwkhnftjizlcbvys"],
        ["Baseball is 90% mental. The other half is physical.\n\t\t- Yogi Berra",
         "hnftjizlcbvysepqomxuagrdwk"],
        ["I used to think I was indecisive, but now I'm not too sure.",
         "mqncdaigyhkxflujzervptobws"],
        ["Einstein's equation 'e = mc squared' shows that mass and\n\t\tenergy are interchangeable.",
         "bludcmhojaifxrkzenpsgqtywv"] ]

    codedMessages = [
        ["Uijt jt uif dpefe nfttbhf.",
         "bcdefghijklmnopqrstuvwxyza"],
        ["Qnhxgomhqm gi 10% bnjd eho 90% omwlignh. - Zghe Xmy",
         "epqomxuagrdwkhnftjizlcbvys"],
        ["Ulj njxu htgcfj C'gj jgjm mjfjcgjt cx, 'Ep pej jyxj veprx rlhu\n\t\t uljw'mj tpcez jculjm'. - Mcfvw Zjmghcx",
         "hnftjizlcbvysepqomxuagrdwk"],
        ["M 2-wdme uxc yr kylc ua xykd m qxdlcde, qpv wup cul'v gmtd mlw\n\t\t vuj aue yv. - Hdeew Rdyladxc",
         "mqncdaigyhkxflujzervptobws"] ]

    for i in plaintextMessages:
        encode(i[1],i[0])


main()

Я могу получить индексы ключа и сообщения, но я не знаю, как заставить эти вещи взаимодействовать или влиять друг на друга.

1 Ответ

0 голосов
/ 10 ноября 2018

Если клавиша должна сдвигать открытый текст на свое число (например, b сместит его на 2), то функции ord и chr помогут.Вы можете перебрать обычный текст, использовать ord, чтобы найти номер буквы, затем сдвинуть его, и использовать chr, чтобы найти новую букву.

Например,

keyAscii = ord(key[i]) - 96 #I'm assuming all keys are like the above and lowercase
textAscii = ord(plaintext[i]) + keyAscii

if((textAscii > 90 and < 97) or (textAscii > 122)):   #This part is to keep it as letters
    textAscii -= 26

Для декодирования закодированного сообщения вы можете просто сделать обратное и вычесть значение ASCII.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...