过去两天我研究了这个主题,并尝试了多种方法来尝试解决我的程序遇到的这个问题。该程序假设采用一个 16 位随 secret 钥并将其与用户输入的消息进行 XOR。我的程序目前没有错误,但我遇到了问题。
import string
import random
message = raw_input("Enter your message: ").split(",")
size = 2 # or whatever lenght you want your random string to be
allowed = string.ascii_letters # add any other allowed characters here
randomstring = ''.join([allowed[random.randint(0, len(allowed) - 1)] for x in xrange(size)])
print
print("This is the key used for encryption:")
print randomstring #prints out key used
print
print("APPLYING XOR METHOD TO MESSAGE AND KEY")
print("--------------------------------------")
for i in xrange(0,len(message)-1):
l += [ord(message) ^ ord(randomstring) for message,randomstring in zip(message,randomstring)]
print l
print
#BRUTE FORCE TO FIND OUT RANDOMSTRING
key= []
count =0
while(key!=randomstring):
key = ''.join([allowed[random.randint(0, len(allowed) - 1)] for x in xrange(size)])
count = count + 1
if(key==randomstring):
print ("FOUND KEY USED BY BRUTE FORCE: "+key)
print (count)
break
此代码生成随 secret 钥并在 for 循环完成后找出相同的 key 。例如我的输出是,
Enter your message: hi
This is the key used for encryption:
ng
APPLYING XOR METHOD TO MESSAGE AND KEY
--------------------------------------
FOUND KEY USED BY BRUTE FORCE: ng
1052
我需要一种方法来将加密的 XOR 消息打印到屏幕上。 提前致谢!
请您参考如下方法:
首先,修复对 raw_input 的调用:
message = raw_input("Enter your message: ")
当您对输入字符串调用 .strip(",") 时,您创建了一个字符串列表。因此,如果您最初输入“Hello, world”,结果将是 ['Hello', 'world']。
稍后在您的程序中,您需要message 是一个字符串,而不是一个列表。
接下来,初始化变量l并在循环后打印它的值:
l=[]
for i in xrange(0,len(message)-1):
l += [ord(message) ^ ord(randomstring) for message,randomstring in zip(message,randomstring)]
print l
