在我的凯撒密码中实现一个蛮力函数

2024-07-05 14:10:06 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能帮我为我的凯撒密码创建一个函数,这个函数可以强制所有可能的密钥结果吗?到目前为止,我的brute函数打印出正确的加密消息,但它不会只打印密钥的消息。例如,(你好!喂。)给定的键1会给出一个输出(1lsahc!LIPPS.),这是正确的,但是当它移到下一个键时,它会给出(2 LSAHC!利普斯.克尔兹格! 或)。输出包括键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()

Tags: messagepositionglobalprintenterbrutekeynumberdecryptedmessage