亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sea_cpp.txt

?? 基于共開密鑰加密算法ECC加密的源程序
?? TXT
?? 第 1 頁 / 共 4 頁
字號:
//
// read in all pre-processed bivariate modular polynomials
//
    modulo(p);   // set modulus
    l[0]=2;
    max=0;
    for (i=1;;i++)
    {
        mueller >> lp;
        if (mueller.eof()) break;
        max=i;
        l[i]=lp;
        cout << setw(3) << lp << flush;
        posXY=NULL;
        Gl[i].clear();
        forever 
        {
            mueller >> c >> nx >> ny;
            posXY=Gl[i].addterm((ZZn)c,nx,ny,posXY);
            if (nx==0 && ny==0) break;
        }
        cout << "\b\b\b" << flush;
    }

    mueller.close();

// loop for "-s" search option

    forever {

    fft_reset();   // reset FFT tables

    ecurve(a,b,p,MR_AFFINE);    // initialise Elliptic Curve

    A=a;
    B=b;

// The elliptic curve as a Polynomial

    Y2=0;
    Y2.addterm(B,0);
    Y2.addterm(A,1);
    Y2.addterm((ZZn)1,3);
    Y4=Y2*Y2;

    cout << "Counting the number of points (NP) on the curve" << endl;
    cout << "y^2= " << Y2 << " mod " << p << endl;   

    delta=-16*(4*A*A*A+27*B*B);

    if (delta==0)
    {
        cout << "Not Allowed! 4A^3+27B^2 = 0" << endl;
        if (search) {b+=1; continue; }
        else return 0;
    }
    
 // Calculate j-invariant

    j=(-1728*64*A*A*A)/delta;

    if (j==0 || j==1728)
    {
        cout << "Not Allowed! j-invariant = 0 or 1728" << endl;
        if (search) {b+=1; continue; }
        else return 0;
    }


// Finding the order modulo 2
// If GCD(X^P-X,X^3+AX+B) == 1 , trace=1 mod 2, else trace=0 mod 2

    XX=0;
    XX.addterm((ZZn)1,1);
    YY=0;
    YY.addterm((ZZn)-1,0);      // Point (X,-Y)
    setmod(Y2);

    XP=pow(XX,p);
    G=gcd(XP-XX);         
    parity=0;
    if (isone(G)) parity=1;
    cout << "NP mod 2 =   " << (p+1-parity)%2;
    if ((p+1-parity)%2==0)
    {                                  
        cout << " ***" << endl;
        if (search) {b+=1; continue; }
    }
    else cout << endl;

    nl=0; 
    accum=1;           // accumulated product of good primes

    Poly zero;
    PolyMod one,XT,YT,ZT,XL,YL,ZL,ZL2,ZT2;
    one=1;         // polynomial = 1
    zero=0;        // polynomial = 0

    PolyXY dGx,dGy,dGxx,dGxy,dGyy;
    ZZn E0b,E0bd,E2bs,E4b,E6b,Dg,Dj,Dgd,Djd,Dgs,Djs,jl,jld,p1,jd;
    ZZn E4bl,E6bl,deltal,atilde,btilde,gd,f,fd,s,Eg,Ej,Exy;
    int r,v,ld,ld1,discrim;
    ZZn M,cf[500],cft[500],ad,K,RF;
    Poly Fl,T,WP[500],H,X,Y,R;
    term *pos;

    E4b=-(A/3);
    E6b=-(B/2);
    delta=(E4b*E4b*E4b-E6b*E6b)/1728;

//
// find out how many bits we are going to need
// before Kangaroos can take over
//
    first=5;
    sl[0]=3; sl[1]=5; sl[2]=7; sl[3]=8; sl[4]=9; sl[5]=0; // do low prime powers
    SCHP=9;

    if (pbits<=256) d=pow((Big)2,64);
    else            d=pow((Big)2,72); // kangaroos do more work

    d=sqrt(p/d);

    escape=FALSE;


// Calculate Divisor Polynomials for small primes - Schoof 1985 p.485
// Set the first few by hand....
    

    P[1]=1; P[2]=2; P[3]=0; P[4]=0;

    P2[1]=1; P3[1]=1;

    P2[2]=P[2]*P[2];
    P3[2]=P2[2]*P[2];

    P[3].addterm(-(A*A),0); P[3].addterm(12*B,1);
    P[3].addterm(6*A,2)   ; P[3].addterm((ZZn)3,4);

    P2[3]=P[3]*P[3];
    P3[3]=P2[3]*P[3];

    P[4].addterm((ZZn)(-4)*(8*B*B+A*A*A),0);
    P[4].addterm((ZZn)(-16)*(A*B),1);
    P[4].addterm((ZZn)(-20)*(A*A),2);
    P[4].addterm((ZZn)80*B,3);
    P[4].addterm((ZZn)20*A,4);
    P[4].addterm((ZZn)4,6);

    P2[4]=P[4]*P[4];
    P3[4]=P2[4]*P[4];

// generation of Divisor polynomials 
// See Schoof p. 485

    for (jj=5;jj<=SCHP+1;jj++)
    { // different for even and odd 
        if (jj%2==1)
        { 
            n=(jj-1)/2;
            if (n%2==0)
                P[jj]=P[n+2]*P3[n]*Y4-P3[n+1]*P[n-1];
            else
                P[jj]=P[n+2]*P3[n]-Y4*P3[n+1]*P[n-1];
        }
        else
        {
            n=jj/2;
            P[jj]=P[n]*(P[n+2]*P2[n-1]-P[n-2]*P2[n+1])/(ZZn)2;
      
        }
        if (jj <= 1+(SCHP+1)/2)
        { // precalculate for later
            P2[jj]=P[jj]*P[jj];
            P3[jj]=P2[jj]*P[jj];
        }
    }

//
// Schoof's original method for small primes
//

    for (i=0;;i++)
    {
        lp=sl[i];
        if (lp==0) break;

        if (lp>=first)
        {
            good[nl]=lp;
            accum*=lp;
        }
        k=p%lp;

        setmod(P[lp]);
        MY2=Y2;
// These next are time-consuming calculations of X^P, X^(P*P), Y^P and Y^(P*P)

        cout << "X^P " << flush;
        XP=pow(XX,p);
        cout << "\b\b\b\bY^P " << flush;
        YP=pow(MY2,(p-1)/2);

        cout << "\b\b\b\bX^PP" << flush;
        XPP=compose(XP,XP);   // this is faster
        cout << "\b\b\b\bY^PP" << flush;
        YPP=YP*compose(YP,XP);
        cout << "\b\b\b\b";

        PolyMod Pk,P2k,PkP1,PkM1,PkP2;
        Pk=P[k]; PkP1=P[k+1]; PkM1=P[k-1]; PkP2=P[k+2];

        P2k=(Pk*Pk);
//
// This is Schoof's algorithm, stripped to its bare essentials
//
// Now looking for the value of tau which satisfies 
// (X^(P*P),Y^(P*P)) + k.(X,Y) =  tau.(X^P,Y^P)
// 
// Note that (X,Y) are rational polynomial expressions for points on
// an elliptic curve, so "+" means elliptic curve point addition
// 
// k.(X,Y) can be found directly from Divisor polynomials
// Schoof Prop (2.2)
//
// Points are converted to projective (X,Y,Z) form
// This is faster (x2). Observe that (X/Z^2,Y/Z^3,1) is the same
// point in projective co-ordinates as (X,Y,Z)
//

        if (k%2==0)
        {
            XT=XX*MY2*P2k-PkM1*PkP1;
            YT=(PkP2*PkM1*PkM1-P[k-2]*PkP1*PkP1)/4;
            XT*=MY2;      // fix up, so that Y has implicit y multiplier
            YT*=MY2;      // rather than Z
            ZT=MY2*Pk;
        }
        else
        {
            XT=(XX*P2k-MY2*PkM1*PkP1);
            if (k==1) YT=(PkP2*PkM1*PkM1+PkP1*PkP1)/4;
            else      YT=(PkP2*PkM1*PkM1-P[k-2]*PkP1*PkP1)/4;
            ZT=Pk;
        }

        elliptic_add(XT,YT,ZT,XPP,YPP);

// 
// Test for Schoof's case 1 - LHS (XT,YT,ZT) is point at infinity
//

        cout << "NP mod " << lp << " = " << flush;
        if (iszero(ZT))
        { // Is it zero point? (XPP,YPP) = - K(X,Y)
            if (lp>=first)  t[nl++]=0;
            cout << setw(3) << (p+1)%lp;
            if ((p+1)%lp==0)
            {      
                cout << " ***" << endl;
                if (search) {escape=TRUE; break;}
            }
            else cout << endl;
            continue;         
        }
//
// Now keep finding tau.(X^P,Y^P), until equality is detected
// This is very simple!
//
        XL=XP;
        YL=YP;
        ZL=1;
        ZT2=ZT*ZT;
        for (tau=1;tau<=(lp/2);tau++)
        { 
            cout << setw(3) << (p+1-tau)%lp << flush;     

            ZL2=ZL*ZL;
            if (iszero(XT*ZL2-ZT2*XL))   // LHS == RHS??
            { // LHS = RHS
                if (!iszero(YT*ZL2*ZL-YL*ZT*ZT2))
                { // point doubled - change sign
                    tau=lp-tau;
                    cout << "\b\b\b";
                    cout << setw(3) << (p+1-tau)%lp << flush;     
                }
                if (lp>=first) t[nl++]=tau;
                if ((p+1-tau)%lp==0)
                {
                    cout << " ***" << endl;
                    if (search) escape=TRUE;
                }
                else cout << endl;
                break;
            }
            elliptic_add(XL,YL,ZL,XP,YP);
            cout << "\b\b\b";            
        }
        if (escape) break;       
    }

    if (!escape) for (i=1;accum<=d;i++)      
    {
        if (i>max)
        {
            cout << "WARNING: Ran out of Modular Polynomials!" << endl;
            break;
        }
        lp=l[i];

        if (lp<=SCHP) continue;

        k=p%lp;
        for (is=1;;is++)
            if (is*(lp-1)%12==0) break;

        el=lp;
        s=is;

// Get next Modular Polynomial

        MP=Gl[i];

// Evaluate bivariate polynomial at Y=j-invariant
// and use as polynomial modulus

        F=MP.F(j);
        setmod(F);
        cout << setw(3) << lp << flush;
        XP=pow(XX,p);
//
// Determine "Splitting type" 
//
        cout << "\b\b\bGCD" << flush;
        G=gcd(XP-XX);

        if (degree(G)==lp+1) 
        {
            cout << "\b\b\b" << flush;
            continue;      // pathological case
        }
        if (degree(G)==0)  // Atkin Prime
        {
            if (!atkin && lp>100)    // Don't process large Atkin Primes
            {
                cout << "\b\b\b" << flush;
                continue;
            }
            BOOL useful=FALSE;
            cout << "\b\b\b" << flush;
            cout << "ATK" << flush;

            PolyMod u[20];
            int max_r,lim=1;
            u[0]=XP;  
            u[1]=compose(u[0],u[0]);

//
// The code for processing Atkin Primes is in here, but currently largely 
// unused. However the simplest case is used, as it suggests only one 
// value for NP mod lp, and so can be used just like an Elkies prime
// 
//
            if (atkin) max_r=lp+1;
            else       max_r=2;
            for (r=2;r<=max_r;r++)
            {
                PolyMod C;
                int kk,m;
                BOOL first;
                if ((lp+1)%r!=0) continue;    // only keep good ones!
                v=jac(k,lp);     // check Schoof Prop. 6.3
                jj=(lp+1)/r;
                if (jj%2==0 && v==(-1)) continue;
                if (jj%2==1 && v==1) continue;
       //         if (phi(r)>8) continue;       // > 8 candidates
       //         if (lp<30 && phi(r)>2) continue;
       //         if (lp<60 && phi(r)>4) continue;
                kk=r; m=0;
                first=TRUE;
//
// Right-to-Left Power Composition - find X^(P^r)
//
                forever
                {
                    if (kk%2!=0)
                    {
                        if (first) C=u[m]; 
                        else       C=compose(u[m],C);
                        first=FALSE;
                    }
                    kk/=2;
                    if (kk==0) break;
                    m++;
                    if (m>lim) 
                    { // remember them for next time

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av网站免费观看| 成人福利视频在线看| 制服丝袜亚洲色图| 亚洲一区av在线| 97久久人人超碰| 中文在线免费一区三区高中清不卡| 久久精品久久久精品美女| 欧美一区二区成人| 日韩av高清在线观看| 91 com成人网| 日本女人一区二区三区| 欧美一区三区四区| 日本v片在线高清不卡在线观看| 欧美精品黑人性xxxx| 午夜精品久久久久久久99樱桃| 欧美少妇xxx| 日日摸夜夜添夜夜添精品视频| 9191久久久久久久久久久| 日韩av网站免费在线| 日韩免费视频一区二区| 黄一区二区三区| 国产日韩精品一区二区浪潮av| 成人影视亚洲图片在线| 亚洲欧洲精品一区二区三区| av电影在线观看完整版一区二区| 亚洲欧洲精品成人久久奇米网| 91影院在线免费观看| 亚洲精品成人精品456| 精品视频一区三区九区| 视频一区二区不卡| 精品国产乱码久久| 国产在线观看一区二区| 国产精品午夜免费| 91麻豆swag| 日韩二区三区四区| 久久综合久久综合久久综合| 成人精品国产免费网站| 一区二区在线免费观看| 欧美片在线播放| 久久99久久精品欧美| 国产欧美一区二区精品婷婷 | 国内外成人在线视频| 国产亚洲一区字幕| 91在线porny国产在线看| 天天影视涩香欲综合网| 亚洲精品在线观看网站| 波多野结衣精品在线| 亚洲成人一区二区在线观看| 欧美mv和日韩mv的网站| 99精品欧美一区二区三区小说 | 日韩免费一区二区三区在线播放| 国产精品一区二区你懂的| 亚洲人成在线观看一区二区| 欧美一区二区三区在线视频| 粉嫩av亚洲一区二区图片| 亚洲影视在线观看| 精品福利一区二区三区免费视频| 成人免费高清在线观看| 亚州成人在线电影| 久久久久久一二三区| 在线观看欧美精品| 久久国产日韩欧美精品| 中文字幕一区二区三区在线不卡 | 亚洲精品中文在线| 精品久久久久久亚洲综合网| 99热这里都是精品| 男人的j进女人的j一区| 国产精品视频第一区| 7777精品伊人久久久大香线蕉经典版下载| 国产福利一区二区三区| 亚洲电影一区二区三区| 国产人久久人人人人爽| 欧美精选一区二区| 成人avav在线| 欧美a级理论片| 综合色中文字幕| 日韩欧美国产一区二区三区| 91视频一区二区| 韩日欧美一区二区三区| 亚洲国产精品久久久久婷婷884| 久久久久久久综合狠狠综合| 欧美日韩在线免费视频| 成人黄色a**站在线观看| 日韩精品久久理论片| 亚洲欧美影音先锋| 精品国产凹凸成av人导航| 欧美色综合久久| av一区二区三区四区| 久久机这里只有精品| 亚洲高清不卡在线| 亚洲色欲色欲www| 久久综合色8888| 91精品久久久久久久91蜜桃| 91在线观看下载| 国产盗摄精品一区二区三区在线 | 亚洲成av人片在线| 国产精品国产三级国产aⅴ原创 | 日韩精品久久理论片| 亚洲欧美福利一区二区| 国产午夜亚洲精品理论片色戒| 欧美日韩高清影院| 色老综合老女人久久久| 国产99久久久国产精品潘金网站| 日本成人在线看| 亚洲电影中文字幕在线观看| 亚洲欧美日韩中文播放| 欧美国产日韩在线观看| 精品电影一区二区三区| 日韩免费性生活视频播放| 在线不卡中文字幕播放| 欧美综合天天夜夜久久| 91免费视频观看| 不卡高清视频专区| 国产精品亚洲人在线观看| 麻豆一区二区在线| 日本一区中文字幕| 亚洲18色成人| 亚洲成人动漫一区| 亚洲第一在线综合网站| 亚洲永久精品大片| 亚洲综合男人的天堂| 一区二区三区在线不卡| 亚洲欧美另类综合偷拍| 中文字幕人成不卡一区| 日韩一区中文字幕| 国产精品对白交换视频| 18成人在线观看| 最新高清无码专区| 中文字幕综合网| 亚洲手机成人高清视频| 1区2区3区国产精品| 日韩理论在线观看| 亚洲人成网站在线| 亚洲欧美一区二区三区极速播放| 亚洲欧洲中文日韩久久av乱码| 亚洲欧美日韩国产一区二区三区| 亚洲欧洲三级电影| 亚洲精品午夜久久久| 一区二区三区欧美在线观看| 一区二区三区 在线观看视频| 一区二区三区免费看视频| 亚洲国产视频一区二区| 亚洲成av人片在线观看| 蜜臀va亚洲va欧美va天堂| 国内精品免费**视频| 国产成人精品亚洲777人妖| 成人性色生活片免费看爆迷你毛片| 成人性视频网站| 99免费精品视频| 欧美性视频一区二区三区| 欧美日韩一区小说| 日韩欧美成人激情| 国产蜜臀97一区二区三区| 国产精品二三区| 亚洲国产色一区| 日韩综合小视频| 激情都市一区二区| www.日韩大片| 欧美亚洲丝袜传媒另类| 欧美一区二区视频在线观看2022| 精品国内片67194| 国产精品青草久久| 一个色妞综合视频在线观看| 青青草国产成人av片免费| 国产一区在线精品| 波多野结衣亚洲一区| 欧美日韩国产高清一区二区三区| 日韩一卡二卡三卡国产欧美| 日本一区二区三区在线不卡| 亚洲欧美日韩成人高清在线一区| 日韩电影一二三区| 成人丝袜高跟foot| 欧美日韩国产中文| 国产三级精品视频| 亚洲一二三四在线| 国产综合色视频| 色av成人天堂桃色av| 欧美一级生活片| 欧美国产一区视频在线观看| 亚洲国产精品一区二区久久| 国产一区视频导航| 色综合久久久久久久久| 日韩免费观看2025年上映的电影| 国产精品人妖ts系列视频| 亚洲成人av免费| 成人一区二区三区视频| 678五月天丁香亚洲综合网| 久久精品视频一区二区三区| 亚洲国产你懂的| 国产91精品久久久久久久网曝门| 欧美揉bbbbb揉bbbbb| 国产偷国产偷亚洲高清人白洁 | 性做久久久久久免费观看欧美| 国产美女av一区二区三区| 一本久久a久久精品亚洲| 精品人伦一区二区色婷婷| 亚洲另类中文字| 国产一区二区三区在线观看精品| 在线观看日韩毛片| 国产视频一区在线播放|