36 lines
728 B
Python
36 lines
728 B
Python
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)) |