繁体   English   中英

如何异或十六进制字符串?

[英]How to XOR to equal hex strings?

有人可以帮助理解它在python(2.7.3版本)中的工作原理吗?

例如,有两个十六进制字符串

a='5f70a65ac'
b='58e7e5c36'

我怎么能正确地测量它?

我尝试使用类似hex (0x5f0x70 ^ 0x580xe70) ,但它不起作用

在尝试对它们进行数学运算之前将字符串转换为整数,然后再返回字符串。

print "%x" % (int(a, 16) ^ int(b, 16))

我在这里使用%转换回字符串而不是hex()因为hex()在开头添加0x (如果值是长整数,则L到末尾)。 您可以将它们剥离,但更容易就是不首先生成它们。

你也可以在第一时间把它们写成十六进制文字:

a=0x5f70a65ac
b=0x58e7e5c36
print "%x" % (a ^ b)

但是,如果您从文件中读取它们或从用户或其他任何方式获取它们,则第一种方法就是您所需要的。

a = '5f70a65ac'
b = '58e7e5c36'
h = lambda s: ('0' + s)[(len(s) + 1) % 2:]
ah = h(a).decode('hex')
bh = h(b).decode('hex')
result = "".join(chr(ord(i) ^ ord(j)) for i, j in zip(ah, bh)).encode("hex")

目前,这仅适用于同等长度的字符串,但可以轻松扩展为使用任意加长的字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM