Почему бы не работать со строками и int
с, чтобы упростить вашу жизнь?
import os,binascii
def xor_strings(a, b):
result = int(a, 16) ^ int(b, 16) # convert to integers and xor them together
return '{:x}'.format(result) # convert back to hexadecimal
number_of_bytes = 2
random_bytes = []
# decode() to turn it into a str.
random_bytes_str = binascii.b2a_hex(os.urandom(number_of_bytes)).decode()
random_bytes.append(random_bytes_str)
random_bytes_str = binascii.b2a_hex(os.urandom(number_of_bytes)).decode()
random_bytes.append(random_bytes_str)
print(random_bytes)
xored = xor_strings(*random_bytes)
print("resultant = ", xored.encode())
print([random_bytes[1], xored])
resultant = xor_strings(random_bytes[1], xored)
print(resultant.encode()) # encode() will turn it back to bytes if you want bytes
Вывод:
['4588', '3af9']
resultant = b'7f71'
['3af9', '7f71']
b'4588'