试图破解项目的XOR密钥(python2.7)

时间:2014-12-24 22:40:51

标签: 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) ^ 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

1 个答案:

答案 0 :(得分:1)

我怀疑当您检查解密是否有效时,您希望调用all而不是常规for循环。这将测试所有字符,只有在它们全部有效时才打印解密:

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

通过使用字符串或集合成员资格测试,您可以使测试比上面的更清晰,而不是明确检查序数范围(例如if all(c in string.printable for c in decrypt)只比您的测试更广泛。)