Python的蛮力

2024-06-03 01:56:30 发布

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

我试图循环解密的消息10次,但我得到了非常不同的结果,我不知道为什么。下面是我的代码。我用同样的代码来加密和解密。我只需要改变newchar = newchar-shfit。使用相同的代码进行循环会得到非常不同的结果。在

  num1=0
  shift=0

  print("Brute force")

  question=input(print("Please enter something to decrypt: "))
  decryptedword = ""
  while num1<10 and shift <10 :


      for character in question:
          newchar = ord(character)
          newchar = newchar - shift
      if newchar < 32:
         newchar = newchar + 95
      elif newchar > 126:
         newchar = newchar - 95
      decryptedword = decryptedword + chr(newchar)


      print(num1,"decrypted word: ",decryptedword)
      num1=num1+1
      shift=shift+1

例如,如果在输入中输入asdasd,我得到:

1个解密单词:a

2解密字:ar

3解密单词:arb

4解密字:arb^

5解密单词:arb^o

6解密单词:arb^o\u

好的,关于它应该是怎样的示例输出,如果我输入dvg,我应该得到:

1解密单词:fxi在

减少2个单词:asd在

3解密单词:ewh在

等等。。在


Tags: 代码消息inputshift单词questionprintarb
2条回答

好吧,每次循环迭代都会增加shift值,因此每次迭代都会改变键。而且,由于每次迭代都会增加密钥(shift),因此每次迭代的解密结果也会有所不同。在

{每一次你都应该删除这个消息 (编辑3:我不知道如何“删除”文本,但以上几行应该忽略不计,因为我误解了作者的问题。)

编辑:还有一个注意,你的缩进似乎错了。if ; elif语句被缩进,好像它们不是循环的一部分,这也会导致意外的行为。
EDIT2:此外,decryptedword = ""应该在循环内,这样每次迭代都会重置它。在

   num1=0
   shift=0


  print("Brute force")

  question=input(print("Please enter something to decrypt: "))
  while num1<10 and shift <10 :
      decryptedword = ""

      for character in question:
          newchar = ord(character)
          newchar = newchar - shift
          if newchar < 32:
             newchar = newchar + 95
          elif newchar > 126:
             newchar = newchar - 95
          decryptedword = decryptedword + chr(newchar)

      print(num1,"decrypted word: ",decryptedword)
      num1=num1+1
      shift=shift+1

缩进都是错误的-if语句需要在for循环中

print("Brute force")

question=input(print("Please enter something to decrypt: "))
decryptedword = ""
while num1 < 10 and shift < 10:

for character in question:
    newchar = ord(character)
    newchar = newchar - shift
    if newchar < ord(' '):
        newchar = newchar + 95
    elif newchar > ord('~'):
        newchar = newchar - 95
    decryptedword = decryptedword + chr(newchar)


print(num1, "decrypted word: ", decryptedword)
num1 = num1 + 1
shift = shift + 1

相关问题 更多 >