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

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

?? poly2mod.cpp

?? 比較新的功能強大的rsa算法源代碼,方便使用.
?? CPP
字號:
/*
 * C++ class to implement a polynomial type and to allow 
 * arithmetic on polynomials whose elements are from
 * the finite field GF(2^m). 
 *
 * WARNING: This class has been cobbled together for a specific use with
 * the MIRACL library. It is not complete, and may not work in other 
 * applications
 *
 * This type is automatically reduced
 * wrt a polynomial Modulus.
 *
 * See Knuth The Art of Computer Programming Vol.2, Chapter 4.6 
 */

#include "poly2mod.h"

extern "C"
{
extern miracl *mr_mip;
}

Poly2 Modulus;

big *GF=NULL;
big *GRF,*T,*W,*Q;

int N,INC;
  
BOOL iszero(const Poly2Mod& m)     {return iszero(m.p);}
BOOL isone(const Poly2Mod& m)      {return isone(m.p);}
int degree(const Poly2Mod& m)  {return degree(m.p);}
          
GF2m Poly2Mod::coeff(int i) const {return p.coeff(i);}

Poly2Mod& Poly2Mod::operator*=(const Poly2Mod &b)
{
    reduce(p*b.p,*this);
    return *this;
}

Poly2Mod operator*(const Poly2Mod &a,const Poly2Mod& b)
{
    Poly2Mod prod=a;
    if (&a!=&b) prod*=b;
    else        prod*=prod;
    return prod;
}

void reduce(const Poly2& p,Poly2Mod& rem)
{
    int m,d;
    GF2m t;
    big *G;
    term2 *ptr,*pos=NULL;
    int n=degree(p);
    int degm=degree(Modulus);

    if (n-degm < KARAT_BREAK_EVEN)
    {
        rem=(Poly2Mod)p;
        return;
    }

    G=(big *)mr_alloc(2*(N+2),sizeof(big));
    
    ptr=p.start;
    while (ptr!=NULL)
    {
        G[ptr->n]=getbig(ptr->an);
        ptr=ptr->next;
    }

    karmul2_poly(N,T,GRF,&G[N],W);   // W=(G/x^n) * h

    for (d=N-1;d<2*N;d++) copy(W[d],Q[d-N+1]);
    m=N+1; if(m%2==1) m=N+2;   // make sure m is even - pad if necessary

    for (d=m;d<2*m;d++) copy(G[d],W[d]);
   
    karmul2_poly_upper(m,T,GF,Q,W);

    pos=NULL;
    rem.clear();
    for (d=N-1;d>=0;d--)
    {
        add2(W[d],G[d],W[d]);
        t=W[d];
        if (t.iszero()) continue;
        pos=rem.addterm(t,d,pos);
    }
    
    mr_free(G);
}

void setmod(const Poly2& p) 
{ 
    int i,n,m;
    Poly2 h;
    term2 *ptr;
    Modulus=p;

    n=degree(p);
    if (n<KARAT_BREAK_EVEN) return;
    h=reverse(p);
    h=invmodxn(h,n);
    h=reverse(h);   // h=RECIP(f)
    m=degree(h);
    if (m<n-1) h=mulxn(h,n-1-m);


    if (GF!=NULL)
    { // kill last Modulus
        for (i=0;i<N+2;i++)
        { 
            mr_free(GF[i]);
            mr_free(GRF[i]);
            mr_free(Q[i]); 
        }
        for (i=0;i<2*(N+INC);i++)
        {
            mr_free(W[i]);
            mr_free(T[i]);
        }
        mr_free(GF);
        mr_free(GRF);
        mr_free(Q);
        mr_free(W);
        mr_free(T);;
    }

    N=n;
    m=N; INC=0;
    while (m!=0) { m/=2; INC++; }

    GF=(big *)mr_alloc(N+2,sizeof(big));
    GRF=(big *)mr_alloc(N+2,sizeof(big));
    Q=(big *)mr_alloc(N+2,sizeof(big));

    W=(big *)mr_alloc(2*(N+INC),sizeof(big));
    T=(big *)mr_alloc(2*(N+INC),sizeof(big));

    for (i=0;i<N+2;i++)
    {
        GF[i]=mirvar(0);
        GRF[i]=mirvar(0);
        Q[i]=mirvar(0);
    }
    for (i=0;i<2*(N+INC);i++) 
    {
        W[i]=mirvar(0);
        T[i]=mirvar(0);
    }

    ptr=p.start;
    while (ptr!=NULL)
    {
        copy(getbig(ptr->an),GF[ptr->n]);
        ptr=ptr->next;
    }
    ptr=h.start;
    while (ptr!=NULL)
    {
        copy(getbig(ptr->an),GRF[ptr->n]);
        ptr=ptr->next;
    }
}

Poly2Mod operator+(const Poly2Mod& a,const Poly2Mod& b)
                                     {return (a.p+b.p)%Modulus;}
Poly2Mod operator*(const Poly2Mod& a,const GF2m& z)
                                     {return (z*a.p);}
Poly2Mod operator*(const GF2m& z,const Poly2Mod& m)
                                     {return (z*m.p);}

    
Poly2Mod operator+(const Poly2Mod& a,const GF2m& z)
{
    Poly2Mod p=a;
    p.addterm(z,0);
    return p;
}

Poly2Mod operator/(const Poly2Mod& a,const GF2m& z)
                                     {return (a.p/z);}

Poly2 gcd(const Poly2Mod& m)
{return gcd(m.p,Modulus);}  

Poly2Mod inverse(const Poly2Mod& m)
                                     
{return (Poly2Mod)inverse(m.p,Modulus);}

//
// Brent & Kung's First Algorithm
// See "Fast Algorithms for Manipulating Formal Power Series 
// J.ACM, Vol. 25 No. 4 October 1978 pp 581-595
//

Poly2Mod compose(const Poly2Mod& q,const Poly2Mod& p)
{ // compose polynomials
  // assume P(x) = P3x^3 + P2x^2 + P1x^1 +P0
  // Calculate P(Q(x)) = P3.(Q(x))^3 + P2.(Q(x))^2 ....   
    Poly2Mod C,Q,T; 
    big t; 
    term2 *xptr,*yptr;
    int i,j,ik,L,n=degree(Modulus);
    int k=isqrt(n+1,1);
    if (k*k<n+1) k++;

// step 1

    Poly2Mod *P=new Poly2Mod[k+1];
    P[0]=1;
    for (i=1;i<=k;i++) P[i]=(P[i-1]*p);

    big *x,*y;
    x=(big *)mr_alloc(k,sizeof(big));
    y=(big *)mr_alloc(k,sizeof(big));
    t=mirvar(0);

    T=1;
    for (i=0;i<k;i++)
    {
        ik=i*k;
        Q.clear();
        for (L=0;L<=n;L++)
        {
            zero(t);
            xptr=q.p.start;
            while (xptr!=NULL) 
            {
                if (xptr->n<=ik+k-1) break;
                xptr=xptr->next;
            }
            for (j=k-1;j>=0;j--)
            {
                x[j]=t;
                if (xptr!=NULL)
                {
                    if (ik+j==xptr->n) 
                    {
                        x[j]=getbig(xptr->an);
                        xptr=xptr->next;
                    }
                }                
                              // x[j]=q.coeff(i*k+j)
                y[j]=t;
                yptr=P[j].p.start;
                while (yptr!=NULL)
                {
                    if (yptr->n<=L)
                    {
                        if (yptr->n==L) y[j]=getbig(yptr->an);
                        break;
                    }
                    yptr=yptr->next;
                }
            }                // y[j]=P[j].coeff(L)

// Asymptotically slow, but fast in practise ...
            gf2m_dotprod(k,x,y,t);
            Q.addterm((GF2m)t,L);
        }
        C+=(Q*T);  
        if (i<k-1) T*=P[k]; 
    }
    mr_free(t);
    mr_free(y);
    mr_free(x);

    delete [] P;
    return C;
}

ostream& operator<<(ostream& s,const Poly2Mod& m) 
                                     { s << m.p; return s;} 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩免费视频一区二区| 亚洲精品美腿丝袜| 国产精品久久久一区麻豆最新章节| 亚洲人成亚洲人成在线观看图片| 爽好久久久欧美精品| 大胆欧美人体老妇| 欧美一区午夜精品| 亚洲视频免费在线| 国产一区二区三区四区五区美女 | 青青青爽久久午夜综合久久午夜| 国产成人亚洲综合色影视| 欧美中文字幕不卡| 中文字幕av资源一区| 日本人妖一区二区| 欧美系列在线观看| 国产精品国产a级| 国产露脸91国语对白| 宅男在线国产精品| 亚洲午夜免费视频| 91性感美女视频| 国产欧美一区二区三区在线老狼| 丝瓜av网站精品一区二区| 色呦呦网站一区| 国产精品视频一区二区三区不卡| 精品在线免费视频| 精品免费视频.| 蜜臀av亚洲一区中文字幕| 国产亚洲一二三区| 蜜臀va亚洲va欧美va天堂 | 久久99在线观看| 5月丁香婷婷综合| 亚洲综合免费观看高清完整版在线 | 国产精品福利一区| 国产凹凸在线观看一区二区| 欧美一级午夜免费电影| 五月综合激情网| 欧美日韩精品欧美日韩精品| 亚洲国产aⅴ天堂久久| 91精品福利在线| 一区二区三区欧美久久| 欧美在线一区二区| 午夜精品视频一区| 欧美日韩激情一区二区三区| 亚洲chinese男男1069| 欧美亚洲日本国产| 五月天激情综合网| 日韩三级视频在线看| 蜜臀国产一区二区三区在线播放| 日韩视频免费观看高清完整版在线观看 | 日韩欧美一级二级三级久久久| 午夜成人免费视频| 日韩精品一区二区三区在线| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美一区二区三区白人| 开心九九激情九九欧美日韩精美视频电影| 69久久夜色精品国产69蝌蚪网| 亚洲成av人影院| 日韩女优av电影| 国产成人综合网站| 天堂在线亚洲视频| 精品乱人伦小说| 丰满岳乱妇一区二区三区 | 日韩女优毛片在线| 国产91富婆露脸刺激对白| 亚洲视频在线一区二区| 欧美亚洲丝袜传媒另类| 久久国产精品区| 国产精品全国免费观看高清| 欧美色综合天天久久综合精品| 日韩综合小视频| 久久精品夜色噜噜亚洲aⅴ| 成人国产免费视频| 午夜av一区二区| 国产精品美女久久久久久久久| 色婷婷久久久亚洲一区二区三区| 天天综合网 天天综合色| 精品sm捆绑视频| 在线视频国内自拍亚洲视频| 国内精品视频一区二区三区八戒 | 欧美电影免费提供在线观看| 成人免费视频视频| 日韩一区精品视频| 国产精品久久久久精k8| 在线综合亚洲欧美在线视频| 成人网男人的天堂| 免费精品视频最新在线| 亚洲视频免费观看| 久久久久久久久99精品| 欧美三级韩国三级日本三斤| 床上的激情91.| 青青草国产成人av片免费| 中文字幕在线观看不卡视频| 欧美α欧美αv大片| 欧洲av一区二区嗯嗯嗯啊| 国产精品99久久久久久似苏梦涵| 亚洲电影激情视频网站| 国产精品情趣视频| 国产精品久久久久久亚洲毛片| 5858s免费视频成人| 91视频观看视频| 成人性色生活片免费看爆迷你毛片| 丝瓜av网站精品一区二区| 国产精品国产三级国产aⅴ原创 | www.成人在线| 国产盗摄一区二区| 五月天激情小说综合| 又紧又大又爽精品一区二区| 久久久不卡网国产精品二区| 日韩一区二区三区视频在线| 欧美日韩小视频| 91视视频在线直接观看在线看网页在线看| 丁香天五香天堂综合| 韩日精品视频一区| 久久国产精品免费| 蜜臀精品久久久久久蜜臀| 日韩精品免费专区| 午夜精品123| 亚洲成人精品影院| 亚洲午夜激情网站| 亚洲国产另类av| 亚洲一区二区av电影| 亚洲一线二线三线视频| 亚洲精品国产成人久久av盗摄| 亚洲欧美视频在线观看视频| 1000部国产精品成人观看| 国产精品美女久久久久久久久 | 美女视频一区二区三区| 久久精品久久精品| 久久99久久99精品免视看婷婷 | 国产精品自拍一区| 国产成人在线免费观看| 国产不卡免费视频| 91在线观看美女| 国产日本欧洲亚洲| 国产视频在线观看一区二区三区| 国产欧美日韩在线| 国产精品理论在线观看| 亚洲免费在线电影| 亚洲伊人色欲综合网| 日韩高清在线不卡| 精品一区二区在线看| 国产精品一区免费视频| 成人av网址在线观看| 欧美在线小视频| 欧美一区二区网站| 国产欧美精品一区aⅴ影院 | 精品免费一区二区三区| wwwwww.欧美系列| 国产精品拍天天在线| 又紧又大又爽精品一区二区| 日韩精品亚洲专区| 国产成人av影院| 一本高清dvd不卡在线观看| 欧美日韩亚洲综合| 久久嫩草精品久久久精品| 日韩毛片在线免费观看| 三级成人在线视频| 成人一区二区三区中文字幕| 在线亚洲精品福利网址导航| 日韩视频免费观看高清在线视频| 国产精品热久久久久夜色精品三区| 亚洲一区二区在线免费看| 麻豆freexxxx性91精品| 95精品视频在线| 日韩区在线观看| 亚洲老司机在线| 精品一区二区三区香蕉蜜桃| 91网页版在线| 精品国产乱码久久久久久免费| 亚洲精选在线视频| 狠狠色狠狠色综合日日91app| 欧洲人成人精品| 国产日韩高清在线| 日韩成人午夜电影| 99久久99久久精品免费观看| 欧美成人三级在线| 亚洲综合激情小说| 国产成人免费视频精品含羞草妖精 | 国产精品影视在线| 欧美久久免费观看| 亚洲天堂久久久久久久| 韩国欧美一区二区| 5566中文字幕一区二区电影| 亚洲日本丝袜连裤袜办公室| 精品一区二区三区日韩| 欧美精品1区2区3区| 亚洲人精品午夜| 国产成人高清视频| 久久免费偷拍视频| 久久99国产精品麻豆| 91 com成人网| 午夜电影一区二区| 欧美午夜理伦三级在线观看| 综合久久综合久久| 成人听书哪个软件好| 国产午夜亚洲精品理论片色戒| 九色porny丨国产精品| 日韩一区二区三区四区| 蜜桃视频在线一区| 欧美一激情一区二区三区|