Python 3 XOR bytearrays - PullRequest
       21

Python 3 XOR bytearrays

0 голосов
/ 17 октября 2018

Есть ли в python 3 встроенная функция, которая может bitwise-xor байт?Например, если у меня есть 2 байта:

one = oE1ltQSsoEqRC4j1EMz1ORU1dyucIcI4WstKz-uhuKA=
two = Rffs1PW5zA1h5RFVh5MkLw5R7a2QVHY7cwnjuSPktwc=

one XOR two = 5bqJYfEVbEfw7pmgl1_RFhtkmoYMdbQDKcKpdshFD6c=

1 Ответ

0 голосов
/ 17 октября 2018

В общем, если у вас есть два bytes es, вы можете сделать

one_xor_two = bytes(a ^ b for (a, b) in zip(one, two))

для поэлементного XOR их.

В вашем случае вы сначала должны декодировать 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))
...