def gf4_mul_v3(x, y):
R = 0x3
MASK = 0xF
z = 0
v = x & MASK
for i in range(4):
if (y >> (3 - i)) & 1:
z ^= v
msb = (v >> 3) & 1
v = (v << 1) & MASK
if msb:
v ^= R
return z & MASK
def gf4_mul_v4(x, y):
R = 0x3
MASK = 0xF
z = 0
v = x & MASK
for i in range(4):
if (y >> i) & 1:
z ^= v
msb = (v >> 3) & 1
v = (v << 1) & MASK
if msb:
v ^= R
return z & MASK
print("v3 (старший бит y):")
print(f" 2*9 = {gf4_mul_v3(2,9)} (должно 1)")
print("v4 (младший бит y):")
print(f" 2*9 = {gf4_mul_v4(2,9)} (должно 1)")