Внедрите в мой шифр-код Цезаря функцию грубой силы - PullRequest
0 голосов
/ 25 мая 2018

Может кто-нибудь помочь мне создать функцию для моего кода Цезаря Шифра, которая перебирает все возможные ключевые результаты?На данный момент, моя грубая функция печатает правильные зашифрованные сообщения, но она не будет печатать только это сообщение ключа.Например, (HOWDY! Hello.) Для данного ключа можно получить вывод (1 LSAHC! LIPPS.), Который является правильным, но когда он переходит к следующему ключу, он выдаст (2 LSAHC! LIPPS.KRZGB).! ХОР.)Вывод включает в себя оба сообщения ключа 1 и 2, и я хочу, чтобы он просто включал сообщение, назначенное для каждой клавиши.

Что должен выводить мой код:

Do you wish to encrypt, decrypt, or brute force a message?
Enter your message:
Your translated text is:
1 LSaHc! Lipps.
2 KRZGb! Khoor.
3 JQYFa! Jgnnq.
4 IPXEZ! Ifmmp.
5 HOWDY! Hello.
6 GNVCX! Gdkkn.
7 FMUBW! Fcjjm.
8 ELTAV! Ebiil.
9 DKSzU! Dahhk.
10 CJRyT! CZggj.
11 BIQxS! BYffi.
12 AHPwR! AXeeh.
13 zGOvQ! zWddg.
14 yFNuP! yVccf.
15 xEMtO! xUbbe.
16 wDLsN! wTaad.
17 vCKrM! vSZZc.
18 uBJqL! uRYYb.
19 tAIpK! tQXXa.
20 szHoJ! sPWWZ.
21 ryGnI! rOVVY.
22 qxFmH! qNUUX.
23 pwElG! pMTTW.
24 ovDkF! oLSSV.
25 nuCjE! nKRRU.

Какой мой кодфактически выводит:

Do you wish to encrypt, decrypt, or brute force a message?
Enter your message:
Your translated text is:
1 LSAHC! LIPPS.
2 LSAHC! LIPPS.KRZGB! KHOOR.
3 LSAHC! LIPPS.KRZGB! KHOOR.JQYFA! JGNNQ.
4 LSAHC! LIPPS.KRZGB! KHOOR.JQYFA! JGNNQ.IPXEZ! IFMMP.
5 LSAHC! LIPPS.KRZGB! KHOOR.JQYFA! JGNNQ.IPXEZ! IFMMP.HOWDY! HELLO.
6 LSAHC! LIPPS.KRZGB! KHOOR.JQYFA! JGNNQ.IPXEZ! IFMMP.HOWDY! HELLO.GNVCX! 
GDKKN.
7 LSAHC! LIPPS.KRZGB! KHOOR.JQYFA! JGNNQ.IPXEZ! IFMMP.HOWDY! HELLO.GNVCX! 
GDKKN.FMUBW! FCJJM.
8 LSAHC! LIPPS.KRZGB! KHOOR.JQYFA! JGNNQ.IPXEZ! IFMMP.HOWDY! HELLO.GNVCX! 
GDKKN.FMUBW! FCJJM.ELTAV! EBIIL.
9 LSAHC! LIPPS.KRZGB! KHOOR.JQYFA! JGNNQ.IPXEZ! IFMMP.HOWDY! HELLO.GNVCX! 
GDKKN.FMUBW! FCJJM.ELTAV! EBIIL.DKSZU! DAHHK.

и т.д ....

Мой полный код:

alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
message = ""
encryptedmessage = " "
decryptedmessage = " "
keynumber = 0
count = 1
number = 0

def encrypt():
  global message
  global encryptedmessage
  global keynumber
  print()
  print()
  message = str(input("Enter your message:"))
  print()
  print()
  keynumber = int(input("Enter the key number (1-26)"))
  print()
  print()
  for i in message:
    position = alphabet.find(i)
    if position == -1:
      encryptedmessage += i
    else:
      newPosition = (position + keynumber) % 26
      encryptedmessage += alphabet[newPosition]
  print("Your translated text is:")
  print(encryptedmessage)


def decrypt():
  global message
  global encryptedmessage
  global decryptedmessage
  global keynumber
  message = str(input("Enter your message:"))
  print()
  print()
  print()
  print()
  keynumber = int(input("Enter the key number (1-26)"))
  print()
  print()
  print()
  print()
  for i in message:
    position = alphabet.find(i)
    if position == -1:
      decryptedmessage += i
    else:
      newPosition = (position - keynumber) % 26
      decryptedmessage += alphabet[newPosition]
  print("Your translated text is:")
  print(decryptedmessage)


def brute():
  global message 
  global encryptedmessage
  global decryptedmessage
  global keynumber
  global count
  global number
  keynumber = 1
  print()
  print()
  message = str(input("Enter your message:"))
  print()
  print()
  print("Your translated text is:")
  while keynumber < 26:
    for i in message:
      position = alphabet.find(i)
      if position == -1:
        decryptedmessage += i
      else:
        newPosition = (position - keynumber) % 26
        decryptedmessage += alphabet[newPosition]
    print(str(keynumber) + decryptedmessage)
    keynumber = keynumber + 1

action = input("Do you wish to encrypt, decrypt, or brute force a message?")

if action == "encrypt":
  encrypt()
if action == "decrypt":
  decrypt()
if action == "brute":
  brute()
...