[英]xor function in python
如果有人可以在python中使用XOR功能,我会很高兴。
例如,我有两个相当大的消息(大约300个符号),它们是用十六进制代码写的,我如何正确地对它们进行XOR? 我尝试使用通用函数并将其转换为其他类型,但我无法做到这一点(
我不知道我需要转换哪种数据类型?
如果我的问题正确无误,如果您有2个十六进制数字表示为字符串:
a = "e877a5e68bea88d61b93ac5ee0d562e8e9"
b = "23fe3231699ade23482"
您可以通过将其转换为int并应用按位xor运算符来使用掩码对它们中的任何一个进行异或:
xor_result = int(a, 16) ^ int(b, 16)
print '%x' % xor_result
并且,如果您想保留原始格式
string_xor_result = hex(xor_result)[2:]
遍历字符串chars,然后将每个char转换为int( int(a,16)
),然后应用xor,用hex
转换为hex,用[2:]
去除开头的“ 0x”,最后加入所有内容
stra = 'abc'
strb = 'abd'
''.join(hex( int(a,16) ^ int(b,16) )[2:] for a,b in zip(stra, strb))
请注意,正如注释中指出的那样,仅当两个字符串的长度相同时,它才有效。 否则,较长字符串的一些字符将被忽略。
如果两个字符串的长度不同,则可以添加一行cycle()
stra = raw_input("msg: ")
strb = raw_input("key: ")
strb = cycle(strb)
print ''.join(hex( int(a,16) ^ int(b,16) )[2:] for a,b in zip(stra, strb))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.