为什么XORing两个十六进制字符串会产生以下格式的输出:' \ x02 \ x07 \ x01P \ x00 \ x07

时间:2016-06-23 21:36:26

标签: python xor

这个程序的最终目的是从XORed十六进制字符串中以纯文本形式返回Eve和Bob。所以首先我用十六进制获得Eve和bob,然后将它们拼凑在一起,希望然后以十六进制的形式看到结果。问题是当我对Bob和Eve的十六进制字符串进行XOR时,我得到了这个符号,' \ x02 \ x07 \ x01P \ x00 \ x07作为初学者,我不知道这意味着什么。那个符号是什么?

计划是后来从XORed Eve和Bob向后工作,并分别以纯文本形式获取每个名称。

到目前为止我的简单代码是:

    a= 'bob'
    b='Eve'
    g=a.encode("hex")
    v=b.encode("hex")

    def strxor(a, b):
     if len(a) > len(b):
      return "".join([chr(ord(x) ^ ord(y)) for (x, y) in zip(a[:len(b)], b)])     
     else:
      return "".join([chr(ord(x) ^ ord(y)) for (x, y) in zip(a, b[:len(a)])])
    k=strxor(g,v) 

1 个答案:

答案 0 :(得分:0)

这是基本的xor_encryption ...实际上b的工作方式类似于加密/解密密钥

import itertools
name1 = "eve online"
name2 = "bob"

xor_encrypted = "".join(chr(ord(a)^ord(b)) for a,b in zip(name1,itertools.cycle(name2)))

print repr(xor_encrypted) # 3 characters will look something like '\x07\x19\x07'

xor_decrypted = "".join(chr(ord(a)^ord(b)) for a,b in zip(xor_encrypted,itertools.cycle(name2)))

print repr(xor_decrypted) # should now print our decrypted 'eve'