Skip to main content
 首页 » 编程设计

python之需要 XOR ascii 消息才能打印到屏幕

2025年05月04日6yjmyzz

过去两天我研究了这个主题,并尝试了多种方法来尝试解决我的程序遇到的这个问题。该程序假设采用一个 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