Do poly1305 with absolutely no modulo operators

This commit is contained in:
Byron Lathi
2025-10-26 16:09:16 -07:00
parent fd50ecc4f0
commit 003527ee0d
2 changed files with 23 additions and 3 deletions

View File

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