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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sea_cpp.txt

?? 基于共開密鑰加密算法ECC加密的源程序
?? TXT
?? 第 1 頁 / 共 4 頁
字號:
        }

        middle=(upper+lower)/2;
        if (ordermod>1)
            middle+=(ordermod+order-middle%ordermod);  // middle must be
                                                       // order mod ordermod

        for (i=0;i<HERD;i++) start[i]=middle+13*ordermod*i; // tame ones
        for (i=0;i<HERD;i++) start[HERD+i]=13*ordermod*i;   // wild ones

        for (i=0;i<2*HERD;i++) 
        {
            K[i]=start[i]*P;         // on your marks ....
            D[i]=0;                  // distance counter
        }
        cout << "Releasing " << HERD << " Tame and " << HERD << " Wild Kangaroos\n";

        nt=0; nw=0; cw=0; ct=0;
        collision=FALSE;  abort=FALSE;
        forever
        { 
            for (jj=0;jj<HERD;jj++)
            {
                K[jj].get(txc);
                i=txc%m;  /* random function */

                if (txc%distinguished==0)
                {
                    if (nt>=STORE)
                    {
                        abort=TRUE;
                        break;
                    }
                    cout << "." << flush;
                    tame[nt]=K[jj];
                    tdist[nt]=D[jj];
                    tname[nt]=jj;
                    for (k=0;k<nw;k++)
                    {
                        if (wild[k]==tame[nt])
                        {
                            ct=nt; cw=k;
                            collision=TRUE;
                            break;
                        }
                    }
                    if (collision) break;
                    nt++;
                }
                D[jj]+=distance[i];
                TE[jj]=table[i];
            }
            if (collision || abort) break;
            for (jj=HERD;jj<2*HERD;jj++)
            {
                K[jj].get(wxc);
                j=wxc%m;

                if (wxc%distinguished==0)
                {
                    if (nw>=STORE)
                    {
                        abort=TRUE;
                        break;
                    }
                    cout << "." << flush;
                    wild[nw]=K[jj];
                    wdist[nw]=D[jj];
                    wname[nw]=jj;
                    for (k=0;k<nt;k++)
                    {
                        if (tame[k]==wild[nw]) 
                        {
                            ct=k; cw=nw;
                            collision=TRUE;
                            break;
                        }
                    }
                    if (collision) break;
                    nw++;
                }
                D[jj]+=distance[j];
                TE[jj]=table[j];
            }
            if (collision || abort) break;

            multi_add(2*HERD,TE,K);   // jump together - its faster
        }
        cout << endl;
        if (abort)
        {
            cout << "Failed - this should be rare! - trying again" << endl;
            continue;
        }
        nrp=start[tname[ct]]-start[wname[cw]]+tdist[ct]-wdist[cw]; 
                                                   // = order mod ordermod
        G=P;
        G*=nrp;
        if (G!=ZERO)
        {
            cout << "Sanity Check Failed. Please report to mike@compapp.dcu.ie" << endl;
            exit(0);
        }
        if (prime(nrp))
        {
            cout << "NP= " << nrp << endl;
            cout << "NP is Prime!" << endl;
            break;
        }

// final checks....
        real_order=nrp; i=0; 
        forever
        {
            sp=get_mip()->PRIMES[i];
            if (sp==0) break;
            if (real_order%sp==0)
            {
                G=P;
                G*=(real_order/sp);
                if (G==ZERO) 
                {
                    real_order/=sp;
                    continue;
                }
            }
            i++;
        }   
        if (real_order <= 4*sqrt(p))
        { 
            cout << "Low Order point used - trying again" << endl;
            continue;
        }
        real_order=nrp;
        for (i=0;(sp=get_mip()->PRIMES[i])!=0;i++)
            while (real_order%sp==0) real_order/=sp;
        if (real_order==1)
        { // all factors of nrp were considered
            cout << "NP= " << nrp << endl;
            break;
        }
        if (prime(real_order))
        { // all factors of NP except for one last one....
            G=P;
            G*=(nrp/real_order);
            if (G==ZERO) 
            {
                cout << "Failed - trying again" << endl;
                continue;
            }
            else 
            {
                cout << "NP= " << nrp << endl;
                break;
            }
        }
// Couldn't be bothered factoring nrp completely
// Probably not an interesting curve for Cryptographic purposes anyway.....
// But if 10 random points are all "killed" by nrp, its almost
// certain to be the true NP, and not a multiple of a small order.

        bad=FALSE;
        for (i=0;i<10;i++)
        { 
            do
            {
                x=rand(p);
            } while (!P.set(x,x));
            G=P;
            G*=nrp;
            if (G!=ZERO)
            {
                bad=TRUE;
                break;
            }
        }
        if (bad)
        {
            cout << "Failed - trying again" << endl;
            continue;                       
        }
        cout << "NP is composite and not ideal for Cryptographic use" << endl;
        cout << "NP= " << nrp << " (probably)" << endl;
        break;
    }
    return nrp;
}

//
// Coefficients Ck from Mueller's lemma 6.2
// 3. page 90
// 4. page 127-128
//

void get_ck(int terms,ZZn a,ZZn b,ZZn *c)
{
    int k,h;
    if (terms==0) return;
    c[1]=-a/5;
    if (terms==1) return;
    c[2]=-b/7;
    for (k=3;k<=terms;k++)
    {
        c[k]=0;
        for (h=1;h<=k-2;h++) c[k]+=c[h]*c[k-1-h];
        c[k]*=((ZZn)3/(ZZn)((k-2)*(2*k+3)));
    }
}

//
// quadratic field arithmetic
// needed for Atkin Primes
//

void mulquad(int p,int qnr,int x,int y,int& a,int& b)
{
    int olda=a;
    a=(a*x+b*y*qnr)%p;
    b=(olda*y+b*x)%p;     
}

void powquad(int p,int qnr,int x,int y,int e,int& a,int& b)
{
    int k=e;
    a=1;
    b=0;
    if (k==0) return;

    for(;;)
    {
        if (k%2!=0)
            mulquad(p,qnr,x,y,a,b);        
        k/=2;
        if (k==0) return;
        mulquad(p,qnr,x,y,x,y);
    }
}

//
// Euler Totient function
//

int phi(int n)
{
    int i,r=1;
    for (i=2;i<n;i++) if (igcd(i,n)==1) r++;
    return r;
}

int main(int argc,char **argv)
{
    ofstream ofile;
    ifstream mueller;
    int SCHP,first,max,lower,ip,parity,pbits,lp,i,jj,is,n,nx,ny,nl;
    int sl[8],k,tau,lambda;
    mr_utype good[100],l[100],t[100];
    Big a,b,c,p,nrp,x,y,d,accum;
    PolyMod XX,YY,XP,XPP,YP,YPP;
    PolyXY MP,Gl[200];
    termXY *posXY;
    Poly F,G,P[500],P2[500],P3[500],Y2,Y4;
    miracl *mip=&precision;
    BOOL escape,search,fout,gotI,gotA,gotB,atkin;
    ZZn j,g,qb,qc,delta,el;
    int Base; 

    argv++; argc--;
    if (argc<1)
    {
        cout << "Incorrect Usage" << endl;
        cout << "Program finds the number of points (NP) on an Elliptic curve" << endl;
        cout << "which is defined over the Galois field GF(P), P a prime" << endl;
        cout << "The Elliptic Curve has the equation Y^2 = X^3 + AX + B mod P" << endl;
        cout << "sea <A> <B> <-i file>" << endl;
        cout << "where the input file contains pre-processed modular polynomials" << endl;
        cout << "for a particular prime modulus P" << endl;
        cout << "e.g. sea -3 35317045537 -i mueller.pol" << endl;
        cout << "To input A and B in Hex, precede with -h" << endl;
        cout << "To output to a file, use flag -o <filename>" << endl;
        cout << "To observe Atkin prime processing, use flag -a" << endl;
        cout << "NOTE: Atkin prime information is not currently used" << endl;
        cout << "To search for NP prime, incrementing B, use flag -s" << endl;
        cout << "\nFreeware from Shamus Software, Dublin, Ireland" << endl;
        cout << "Full C++ source code and MIRACL multiprecision library available" << endl;
        cout << "http://indigo.ie/~mscott for details" << endl;
        cout << "or email mscott@indigo.ie" << endl;
        return 0;
    }

    ip=0;
    gprime(10000);                 // generate small primes < 1000
    search=fout=gotI=gotA=gotB=atkin=FALSE;
    a=0; b=0;

// Interpret command line
    Base=10;
    while (ip<argc)
    {
        if (!fout && strcmp(argv[ip],"-o")==0)
        {
            ip++;
            if (ip<argc)
            {
                fout=TRUE;
                ofile.open(argv[ip++]);
                continue;
            }
            else
            {
                cout << "Error in command line" << endl;
                return 0;
            }
        }
        if (!gotI && strcmp(argv[ip],"-i")==0)
        {
            ip++;
            if (ip<argc)
            {
                gotI=TRUE;

                mueller.open(argv[ip],ios::in);
                if (!mueller)
                {
                    cout << "input file " << argv[ip] << " could not be opened" << endl;
                    return 0;
                }
                ip++;
                continue;
            }
            else
            {
                cout << "Error in command line" << endl;
                return 0;
            }
        }

        if (strcmp(argv[ip],"-s")==0)
        {
            ip++;
            search=TRUE;
            continue;
        }

        if (strcmp(argv[ip],"-a")==0)
        {
            ip++;
            atkin=TRUE;
            continue;
        }

        if (strcmp(argv[ip],"-h")==0)
        {
            ip++;
            Base=16;
            continue;
        }

        if (!gotA) 
        {
            mip->IOBASE=Base;
            a=argv[ip++];
            mip->IOBASE=10;
            gotA=TRUE;
            continue;
        }
        if (!gotB) 
        {
            mip->IOBASE=Base;
            b=argv[ip++];
            mip->IOBASE=10;
            gotB=TRUE;
            continue;
        }
        cout << "Error in command line" << endl;
        return 0;
    }    

    if (!gotI || !gotA || !gotB)
    {
        cout << "Error in command line" << endl;
        return 0;
    }

// get prime modulus from .pol file

    mueller >> p;
    pbits=bits(p);
    if (pbits<64)
    {
        cout << "Prime modulus too small for this program!" << endl;
        cout << "Use SCHOOF program (ftp://ftp.compapp.dcu.ie/pub/crypto/schoof.exe)" << endl;
        exit(0);
    }
    cout << "P= " << p << endl;
    cout << "P mod 24 = " << p%24 << endl;
    cout << "P is " << pbits << " bits long" << endl;
    cout << "Reading in pre-processed Modular Polynomials... " << endl;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
1区2区3区精品视频| 色呦呦日韩精品| 日日嗨av一区二区三区四区| 亚洲色图色小说| 综合久久国产九一剧情麻豆| 国产精品久久久久婷婷| 国产精品久久免费看| 国产精品久久夜| 亚洲欧美激情视频在线观看一区二区三区 | 韩国成人在线视频| 国产精品久久一卡二卡| 亚洲免费观看高清完整版在线观看| 国产精品欧美一级免费| 自拍偷拍欧美激情| 午夜久久久久久久久| 轻轻草成人在线| 国产精品一区不卡| 国产成人综合在线观看| heyzo一本久久综合| 99九九99九九九视频精品| 日本道在线观看一区二区| 欧美挠脚心视频网站| 91精品婷婷国产综合久久| 欧美色电影在线| av在线不卡观看免费观看| 91一区一区三区| 日韩视频免费观看高清在线视频| www国产精品av| 成人欧美一区二区三区白人| 亚洲欧美乱综合| 夜夜操天天操亚洲| 日本系列欧美系列| 国内精品第一页| 9人人澡人人爽人人精品| 欧美在线999| 久久亚洲综合av| 国产精品久久久久久久蜜臀| 亚洲一区二区三区四区在线观看 | 天使萌一区二区三区免费观看| 日本不卡一二三区黄网| 久久精品国产99| 99精品视频一区二区| 精品视频一区三区九区| 精品久久久久久久人人人人传媒| 国产日韩欧美激情| 午夜激情综合网| 国产一区二区三区综合| 欧美天堂一区二区三区| 国产欧美一区二区精品忘忧草 | 欧美变态tickling挠脚心| 国产欧美精品国产国产专区 | 日韩午夜在线影院| 国产欧美精品一区二区三区四区| 亚瑟在线精品视频| 91同城在线观看| 久久久久久久综合狠狠综合| 亚洲国产精品欧美一二99 | 国产精品成人免费| 精品在线播放免费| 51午夜精品国产| 亚洲欧洲国产日本综合| 国产99久久久精品| 亚洲精品一区二区三区在线观看| 一区二区三区视频在线观看| 99精品视频在线播放观看| 欧美极品少妇xxxxⅹ高跟鞋 | 欧美日韩精品一区二区三区| 国产精品乱码人人做人人爱 | 亚洲一区二区三区四区在线免费观看 | 狠狠久久亚洲欧美| 欧美mv日韩mv| 日本成人在线看| 欧美成人激情免费网| 美国十次综合导航| 日韩精品一区二| 国产一区二区按摩在线观看| 精品福利视频一区二区三区| 国产呦萝稀缺另类资源| 国产日产亚洲精品系列| 成人免费看黄yyy456| 国产精品免费aⅴ片在线观看| 国产成人综合亚洲91猫咪| 国产精品乱子久久久久| 久久国产精品99久久人人澡| 欧美日本在线一区| 亚洲精品一区在线观看| 久久国产夜色精品鲁鲁99| 26uuu久久天堂性欧美| 国产高清视频一区| 中文字幕在线一区二区三区| 色哟哟在线观看一区二区三区| 亚洲精品欧美二区三区中文字幕| 欧美色图12p| 日日噜噜夜夜狠狠视频欧美人 | 精品久久久久香蕉网| 国产精品1区2区3区在线观看| 日韩手机在线导航| 国产精华液一区二区三区| 亚洲国产精品成人综合| 不卡的电影网站| 一区二区三区不卡视频在线观看| 91免费版在线看| 日韩av在线播放中文字幕| 日韩一级黄色大片| 久久99国产精品麻豆| 国产亚洲一区字幕| 国产一区二区三区在线观看精品| 国产欧美一二三区| 色婷婷综合久久久中文字幕| 亚洲五码中文字幕| 欧美一区二区人人喊爽| 国产福利一区二区三区视频| 亚洲综合另类小说| 精品福利一区二区三区免费视频| 色欧美乱欧美15图片| 久久99久久精品| 亚洲精品国产无天堂网2021| 欧美成人猛片aaaaaaa| 成人免费看片app下载| 国产午夜精品一区二区三区嫩草| 国产精品一区二区在线看| 日韩精品一区二区三区中文不卡| 亚洲成人激情社区| 日韩美女视频一区二区| 春色校园综合激情亚洲| 久久久久久久久久久电影| 色综合久久中文综合久久97| 亚洲成人午夜电影| 国产欧美日韩精品一区| 欧美日韩一区二区电影| 国产乱国产乱300精品| 三级在线观看一区二区| 中文子幕无线码一区tr| 欧美日韩专区在线| 99久久久国产精品| 成人免费视频视频在线观看免费 | 日本一区二区成人| 欧美日韩国产一级| 91免费观看视频| 成人动漫精品一区二区| 麻豆91小视频| 丝袜亚洲另类欧美综合| 亚洲乱码国产乱码精品精可以看| 国产精品久久久久一区| 中文字幕欧美日韩一区| 国产视频一区不卡| 在线一区二区视频| 国产在线一区观看| 久久精品一二三| 国产精品国产三级国产aⅴ中文| 欧美一a一片一级一片| 性做久久久久久久久| 亚洲欧美色一区| 国产精品网曝门| 国产欧美一区二区精品仙草咪| 日韩欧美一区二区不卡| 日韩一区二区电影| 日韩三级中文字幕| 欧美va在线播放| 欧美一区二区三区在线| 日韩一本二本av| 欧美tickling网站挠脚心| 欧美第一区第二区| 精品国产免费久久| 久久久久久久久久久久久女国产乱 | 精品少妇一区二区三区在线播放| 91精品国产综合久久婷婷香蕉| 91成人国产精品| 欧美日韩黄视频| 日韩一级视频免费观看在线| 日韩欧美国产一二三区| 久久久噜噜噜久久中文字幕色伊伊| 国产丝袜美腿一区二区三区| 欧美国产激情二区三区| 自拍视频在线观看一区二区| 亚洲国产一区二区a毛片| 日韩一区欧美二区| 激情五月婷婷综合网| 日韩高清欧美激情| 国模无码大尺度一区二区三区| 亚洲一区二区av在线| 秋霞成人午夜伦在线观看| 国产精品一线二线三线| 91美女精品福利| 日韩欧美电影在线| 中日韩av电影| 亚洲第一搞黄网站| 久草精品在线观看| 91精品91久久久中77777| 欧美精品 国产精品| 国产亚洲视频系列| 午夜电影一区二区| 国产精品1区2区3区| 欧美专区日韩专区| 国产女同性恋一区二区| 午夜精品成人在线视频| 奇米影视在线99精品| 高清不卡一区二区| 在线观看日韩精品| 中文字幕欧美激情一区|