Do poly1305 with absolutely no modulo operators
This commit is contained in:
@@ -50,6 +50,18 @@ def modulo_theory_full(loops: int):
|
||||
print(f"{mod_sum=}")
|
||||
print(f"{mod_conventional=}")
|
||||
|
||||
def friendly_modular_mult(value_a: int, value_b: int) -> int:
|
||||
a_partials = [(value_a >> 26*i) & (2**26-1) for i in range(5)]
|
||||
|
||||
prods = [a_partial * value_b for a_partial in a_partials]
|
||||
|
||||
mods = [friendly_modulo(prod, 26*i) for i, prod in enumerate(prods)]
|
||||
|
||||
|
||||
mod_sum = friendly_modulo(sum(mods), 0)
|
||||
|
||||
return mod_sum
|
||||
|
||||
def friendly_modulo(val: int, shift_amount: int) -> int:
|
||||
high_part = val >> (130-shift_amount)
|
||||
low_part = (val << shift_amount) & (2**130-1)
|
||||
|
||||
Reference in New Issue
Block a user