Files
chiffrement/tp3/df.c

31 lines
525 B
C
Raw Normal View History

2025-06-10 11:54:50 +02:00
#include "df.h"
uint64 expm(uint64 m, uint64 e, uint64 mod)
{
uint128 _r = 1;
uint128 _m = (uint128)m;
uint128 _mod = (uint128)mod;
while (e > 0) {
if (e % 2 == 1) {
_r = (_r * _m) % _mod;
}
_m = (_m * _m) % _mod;
e = e / 2;
}
return (uint64)_r;
}
uint64 generateur(uint64 p)
{
uint64 q = (p - 1) / 2;
uint64 g = 2;
while (1) {
if (expm(g, 2, p) != 1 && expm(g, q, p) != 1) {
return g;
}
g++;
}
}