Я использую pyfinte для вычисления умножения для AES для поля, которое оно использует, которое равно F (2 ^ 8), но когда я делаю следующее:
from pyfinite import ffield
a = 0xbf
b = 0x03
F = ffield.FField(8)
c = F.Multiply(a, b)
print(hex(c))
фактический результат - 0xdc, но он должен быть 0xda, вот как я решаю это вручную:
0xbf * 0x03 = 0xbf * 0x02 + 0xbf * 0x01 = 0b10111111 * 0x02 + 0xbf = 0b01111110 + 0x1B + 0xbf = 0b11011010 = 0xda
вот лучший формат решения моей руки:
так где же не так? это на моем решении вручную? или в пифините? как решить это?