Я новичок в python3, я получаю следующую ошибку при попытке вывести значение first_block ниже.
File "cbcmodechal10.py", line 18, in main
first_block = iv ^ plaintext[0]
TypeError: unsupported operand type(s) for ^: 'bytes' and 'bytes'
Может кто-нибудь также объяснить, почему это происходит, хотя обе переменные в байтах, почему эта операция не успешна?
Я знаю, что есть какая-то проблема с кодировкой utf-8, но не могу понять что?
#!/bin/bash/python3
import urllib.request
import base64
from Crypto.Cipher import AES
def main():
file = urllib.request.urlopen('https://cryptopals.com/static/challenge-data/10.txt')
ciphertext = file.read().decode('utf-8')
cipher = base64.b64decode(ciphertext)
key = bytes('YELLOW SUBMARINE', 'utf-8')
iv = bytes('\x00' * 16, 'utf-8')
blocksize = 16
chunks = [cipher[i:i+blocksize] for i in range(0, len(cipher), blocksize)]
#print(chunks[0])
cipher1 = AES.new(key, AES.MODE_ECB)
blocks = int(len(cipher) / blocksize)
plaintext = [cipher1.decrypt(chunks[j]) for j in range(0, blocks)]
first_block = iv ^ plaintext[0]
print(first_block)
if __name__ == '__main__':
main()
ожидаемый результат: b "Я вернулся и я"