尝试破解项目的XOR键(python2.7)

尝试破解项目的XOR键(python2.7),python,xor,Python,Xor,嗨,我正在尝试加密一个代码,然后尝试找到代码的密钥,但没有得到最好的结果,我不知道我可以在这里做什么 from itertools import izip, cycle import itertools import binascii a = 0 message = "Hello friend" length = len(message) key = "s" c = 0 def xor_crypt_string(data, key): return "".join(chr(ord(x)

嗨,我正在尝试加密一个代码,然后尝试找到代码的密钥,但没有得到最好的结果,我不知道我可以在这里做什么

from itertools import izip, cycle
import itertools
import binascii
a = 0
message = "Hello friend"
length = len(message)
key = "s"
c = 0
def xor_crypt_string(data, key):
    return "".join(chr(ord(x) ^ ord(y)) for (x,y) in izip(data, cycle(key)))

encrypt = xor_crypt_string(message, key)

while (c <= length):
    res = itertools.permutations('abcdefghijklmnopqrstuvwxyz', c) # 3 is the length of your result.
    c = c + 1
    for i in res: 
        keys = ''.join(i)
        decrypt = xor_crypt_string(encrypt, keys)
        for d in decrypt:
            if (ord(d) > 47 and ord(d) < 58) or (ord(d) == 32) or (ord(d) > 64 and ord(d) < 91) or (ord(d) > 96 and ord(d) <123):
                print decrypt
            else: 
                a = 0
从itertools导入izip,循环
进口itertools
导入binascii
a=0
message=“你好,朋友”
长度=长度(信息)
key=“s”
c=0
def xor_加密_字符串(数据、密钥):
返回“”。在izip(数据,循环(键))中为(x,y)加入(chr(ord(x)^ord(y))
加密=异或加密字符串(消息、密钥)

而(c 47和ord(d)<58)或(ord(d)==32)或(ord(d)>64和ord(d)<91)或(ord(d)>96和ord(d)我怀疑在检查解密是否有效时,您希望调用
all
而不是常规的
循环。这将测试所有字符,并且仅在它们都有效时打印解密:

if all(x == 32 or 47 < x < 58 or 64 < x < 91 or 96 < x < 123
       for x in (ord(c) for c in decrypt)):
   print decrypt
如果全部(x==32或47

通过使用字符串或集合成员资格测试,而不是显式地检查顺序范围(例如,
如果all(字符串中的c.printable for c in decrypt)
只比您的测试宽一点),您可以使您的测试比我上面的测试更清晰。

ord(d)>47和ord(d)<58
的拼写更好
47
这里有一个python2.x的标签,而不是放在标题中。你可以使用它!