我试图循环解密的消息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在
等等。。在
好吧,每次循环迭代都会增加
shift
值,因此每次迭代都会改变键。而且,由于每次迭代都会增加密钥(shift
),因此每次迭代的解密结果也会有所不同。在{每一次你都应该删除这个消息
(编辑3:我不知道如何“删除”文本,但以上几行应该忽略不计,因为我误解了作者的问题。)
编辑:还有一个注意,你的缩进似乎错了。
if ; elif
语句被缩进,好像它们不是循环的一部分,这也会导致意外的行为。EDIT2:此外,
decryptedword = ""
应该在循环内,这样每次迭代都会重置它。在缩进都是错误的-if语句需要在for循环中
相关问题 更多 >
编程相关推荐