【发布时间】:2013-10-29 22:17:39
【问题描述】:
我正在尝试编写自己的 python 代码来暴力破解凯撒密码,我需要一些帮助。我在函数代码的末尾特别需要帮助。我想知道如何专门打印,以便在每个键尝试后都有一个间隙。我正在使用 python 3.3,并且 3 周前才开始编码。
print ("The plaintext will be stripped of any formatting such as spaces.")
freqlist = []
maxkey = 26
if key > maxkey:
raise Exception("Enter a key between 0 and 26: ")
elif key < 0:
raise Exception("Enter a key between 0 and 26: ")
freq = []
inpt=input("Please enter the cipher text:")
inpt = inpt.upper()
inpt = inpt.replace(" ", "")
inpt = inpt.replace(",", "")
inpt = inpt.replace(".", "")
for i in range(0,27):
key = i
def decrypt():
for i in range(0,27):
for a in inpt:
b=ord(a)
b-= i
if b > ord("Z"):
b -= 26
elif b < ord("A"):
b+=26
freqlist.append(b)
for a in freqlist:
d=chr(a)
freq.append(d)
freq="".join(freq)
print(freq.lower(),"\n")
decrypt()
我正在尝试使用 for 循环,但我认为它并不能真正有效地工作。
【问题讨论】:
-
抱歉,您所说的“有效工作”是指根本不工作(如果是这样,有什么错误消息)或者只是效率不高?这可能是语言问题,但我不明白。
-
所以现在你有了每个凯撒密码的输入频率表。你打算用这些桌子做什么?你将如何确定哪个密码是正确的?
-
我只需要有关如何改进此代码的帮助和建议。
-
这里有一个错误:文件“C:\Users\IshankParul\Desktop\module3.py”,第 29 行,在解密 freq.append(d) UnboundLocalError: local variable 'freq' referenced before assignment
标签: python for-loop python-3.x encryption