Загрузка данных


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)")