Bill Allombert on Sat, 05 Jul 2025 23:34:00 +0200
|
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: What’s the equivalent of this py_ecc code for untwisting the ʙɴ128 curve in Pari/ɢᴘ ?
|
- To: pari-users <pari-users@pari.math.u-bordeaux.fr>
- Subject: Re: What’s the equivalent of this py_ecc code for untwisting the ʙɴ128 curve in Pari/ɢᴘ ?
- From: Bill Allombert <Bill.Allombert@math.u-bordeaux.fr>
- Date: Sat, 5 Jul 2025 23:33:56 +0200
- Delivery-date: Sat, 05 Jul 2025 23:34:00 +0200
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/simple; d=math.u-bordeaux.fr; s=2022; t=1751751238; bh=dmFo/vF3hza2eAz2JzNIm4X7CUV/IGMQ42mQPgUARk0=; h=Date:From:To:Subject:References:In-Reply-To:From; b=T6GtGTjlZGVSO/YDBj2JvruV5lCpZUHhrXib2ESRVJbWhLPEX2hd9rHRWOU45ieP9 FHmcMQ3N3t8LS4YDyXgGuyEwNDeOwHfzeHEMei9LJaE+E00RK+cc2PBTfdohJhHxO9 UOaRj8tqeDzMUF+1avA/aO5DFIqZsv6d7WdujCPHB7oB2nb3XJDGfMMx1HXGW6cqRv EpwIrHLSqYCNTcX7rVsozzmKROl7NZlQPLOrszUZSSMfNYcoPW7Nily/sBlJGXLXtd ncxh/SnR5mPCH2K04Tgdak8gMTPYGp451dSRw4eXU/TPqh5pIO2lnrwihK9Q6pzZBF EU4fir4Qd+NIoCBnEOVcdTnxaY5S8T4S8jB7cBqPu10pBk4o5rItgbaOCdHg3wA1OI RvO0VwqEyyw8al8yeNbjSgt255xuVcLCyr+JXM0dU/8qkwObEwGrray4dICZXCZASx UxYDE8i3FclcNidM1vxiNyuY3M9AcGFzmjYIh6eDpdlN/mSKmp+UFyfU26v43bIQUo B3kyiiZSQ+9ThcUfl0FFgm28yJaa3VNSk+wmZbE50kHKHSRctoj/Y32xmGarkOv7tv ivOZt5hsBIq/AA3giVu9tzvtGrvTNgb4NLRVfQ7l3lLgKNNZaHpPKcWu3Ki6f3TzrY dKZ8Z5Kj0Wn+sxU3BmmdAvCE=
- In-reply-to: <f9a80b90-c74a-4fe0-82c7-40f644257341@gmail.com>
- Mail-followup-to: pari-users <pari-users@pari.math.u-bordeaux.fr>
- References: <f9a80b90-c74a-4fe0-82c7-40f644257341@gmail.com>
On Sat, Jul 05, 2025 at 10:56:31PM +0200, Laël Cellier wrote:
> Without using mathematical formulas, the question is not understandable :
> the curve is over a very special field. However, you can still use
> https://pari.math.u-bordeaux.fr/archives/pari-users-2507/msg00029.html to
> display it correctly,
So first define the field and the point:
p=21888242871839275222246405745257275088696311157297823662689037894645226208583;
i=ffgen((i^2+1)*Mod(1,p));
X=11559732032986387107991004021392285783925812861821192530917403151452391805634*i+10857046999023057135944570762232829481370756359578518086990519993285655852781;
Y=4082367875863433681332203403145435568316851327593401208105741076214120093531*i+8495653923123431417604973247489272438418190587263600148770280649306958101930;
pt = [X,Y];
\\ then define the target field, the target curve and the map from Fp[i] to Fp[w]:
w=ffgen((w^12 - 18 * w^6 + 82)*Mod(1,p));
E2 = ellinit([0,3],w);
map = ffembed(i,w);
\\ define the isomorphism:
twist(pt)= [ffmap(map,pt[1])*w^2, ffmap(map,pt[2])*w^3];
\\ apply to pt
pt2=twist(pt);
\\ check
ellisoncurve(E2,pt2)
%11 = 1
\\ success!
Cheers,
Bill.