如何使用 Python 对两个字符串进行异或?

How to XOR two strings using Python?

如果我有:

cipher_text1 =  "3b101c091d53320c000910"
cipher_text2 = "071d154502010a04000419"

如何使用 Python 对两个密文进行异或得到:

cipher_text1_XOR_cipher_text2 = "3c0d094c1f523808000d09"

谢谢

试试这个:

cipher_text1 = "3b101c091d53320c000910"
cipher_text2 = "071d154502010a04000419"

def xor_ciphers(cipher1, cipher2):
    bin1 = int(format(int(cipher1, 16), f'0{str(len(cipher1))}b'), 2)
    bin2 = int(format(int(cipher2, 16), f'0{str(len(cipher2))}b'), 2)
    return hex(bin1 ^ bin2)


print(xor_ciphers(cipher_text1, cipher_text2))

输出:

0x3c0d094c1f523808000d09

int() 函数开始,它允许您指定一个基数,在该基数中解释要转换为数值的字符串。该函数假定的默认基数是 10,但 16 也适用,并且适合您拥有的字符串。因此,您使用 int() 将两个字符串转换为数值,然后对这些值执行 XOR。然后,将 hex() 函数应用于结果,将其转换为十六进制字符串。最后,由于您要求的结果前面没有 Ox,因此您应用适当的切片来切掉 what hex() returns:

的前两个字符
cipher_text1 = "3b101c091d53320c000910"
cipher_text2 = "071d154502010a04000419"

cipher_text1_XOR_cipher_text2 = hex(int(cipher_text1, 16) ^ int(cipher_text2, 16))[2:]

print(cipher_text1_XOR_cipher_text2)

结果:

3c0d094c1f523808000d09