\l ecc.log p=randomprime(2^100) a=Mod(2,p) a^(p-1) \\ exponentiation P=ffinit(13,2) polisirreducible(P) a=ffgen(P,'a) a=ffgen(13^7,'a) a^10458086 \\ puissance fforder(a) \\ ordre d'un élément minpoly(a) \\ polynôme minimal random(a) \\ tire au hasard un élément de F_p^n b = ffprimroot(a) fforder(a) fforder(b) n=fflog(a,b) b^n Es = ellinit([a^4,a^6],a); E = ellinit([a,a^2,a^3,a^4,a^6],a); E.j \\ j-invariant ellcard(E) \\ cardinal of E(F_q) ellgroup(E) \\ structure of E(F_q) G=ellgenerators(E) \\ generators of E(F_q) P = random(E) \\ point au hasard sur E(F_q) Q = random(E) \\ un autre point sur E(F_q) ellisoncurve(E, P) \\ vérifie que le point est sur la courbe elladd(E, P, Q) \\ P+Q sur E ellmul(E, P, 100) \\ 100.P sur E oP = ellorder(E,P) \\ordre de P oQ = ellorder(E,Q) \\ordre de Q o = lcm(oP,oQ); \\ P et Q sont dans E(F_q)[o] w=ellweilpairing(E,P,Q,o) \\ couplage de Weil de P et Q d'ordre o fforder(w) nP = ellmul(E, P, random(o)); n = elllog(E,nP,P) ellmul(E,P,n) == nP until(isprime((p-1)/2), p=randomprime(2^30));p g=ffprimroot(ffgen(p))^2; a=g^random(p); fflog(a,g) ## until(isprime(ellcard(E)),E=ellinit([1,random(g)],g)); G=ellgenerators(E)[1]; P=ellmul(E,G,random(ellcard(E))); elllog(E,P,G) ## until(isprime(p),n=randomprime(2^50);p=1+4*n^2);p a=ffgen(p); E=ellinit([1,0],a); ellgroup(E) [P,Q] = ellgenerators(E); \\ name P and Q the generators. e = random(2*n) R = ellmul(E,P,e); wR = ellweilpairing(E,Q,R,2*n); wP = ellweilpairing(E,Q,P,2*n); default(parisize,"32M"); fflog(wR,wP,2*n) ## elllog(E,R,P,2*n) ## until(p%4==3 && isprime((p+1)/4),p=randomprime(2^52)); a=ffgen(p^2,'a); E=ellinit([1,0],p); \\ E(F_p) ellgroup(E) [P] = ellgenerators(E) E2=ellinit([1,0],a); \\ E(F_p^2) [m,m]=ellgroup(E2) [P1,Q] = ellgenerators(E2) ellweilpairing(E2,P,Q,m); e = random(m) R = ellmul(E,P,e); wR = ellweilpairing(E2,Q,R,m); wP = ellweilpairing(E2,Q,P,m); fflog(wR,wP,m) ## elllog(E,R,P,m) ##