在Python 3中是否有内置函数可以对字节进行按位异或操作?例如,如果我有两个bytearray:
one = oE1ltQSsoEqRC4j1EMz1ORU1dyucIcI4WstKz-uhuKA=
two = Rffs1PW5zA1h5RFVh5MkLw5R7a2QVHY7cwnjuSPktwc=
one XOR two = 5bqJYfEVbEfw7pmgl1_RFhtkmoYMdbQDKcKpdshFD6c=
在Python 3中是否有内置函数可以对字节进行按位异或操作?例如,如果我有两个bytearray:
one = oE1ltQSsoEqRC4j1EMz1ORU1dyucIcI4WstKz-uhuKA=
two = Rffs1PW5zA1h5RFVh5MkLw5R7a2QVHY7cwnjuSPktwc=
one XOR two = 5bqJYfEVbEfw7pmgl1_RFhtkmoYMdbQDKcKpdshFD6c=
通常情况下,如果您有两个 bytes
,您可以执行以下操作:
one_xor_two = bytes(a ^ b for (a, b) in zip(one, two))
逐个对它们执行异或操作。
在您的情况下,您需要首先对字符串进行base64解码,然后执行XOR操作,最后进行base64编码... 然而,由于Python不喜欢其中的错误填充,所以示例字符串将无法正常工作。
import base64
one = base64.b64decode('oE1ltQSsoEqRC4j1EMz1ORU1dyucIcI4WstKz-uhuKA=')
two = base64.b64decode('Rffs1PW5zA1h5RFVh5MkLw5R7a2QVHY7cwnjuSPktwc=')
one_xor_two = bytes(a ^ b for (a, b) in zip(one, two))
print(base64.b64encode(one_xor_two))