def gcm_add(x, y): return x ^ y def gcm_multiply(x, y, poly): z = 0 for _ in range(poly.bit_length()): if y & 1: z ^= x hi_bit_set = x & (1 << poly.bit_length() - 1) x <<= 1 if hi_bit_set: x ^= poly y >>= 1 return z def incr(x): y=1%(2^32) wyn = x+y if wyn >= 2^32: wyn=1%(2^32) return wyn a = 0b0001 b = 0b0101 print(a,b) print(bin(a),bin(b)) polynomial = 0xE1000000000000000000000000000000 result = gcm_multiply(a, b, polynomial) print("GCM Multiplication Result:", bin(result)) result = gcm_add(a, b) print("GCM Addition Result:", bin(result)) print(incr(1)) print(incr((2^32)-1))