如何使用 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
如果我有:
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