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

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

?? bigint.cpp

?? 基于ElGamal的數字簽名系統可以對報文在不同的密鑰長度上進行簽名與驗證.
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
		if(len)
		{
			Z.m_nLength+=len;
			for(i=Z.m_nLength-1;i>=len;i--)Z.m_ulValue[i]=Z.m_ulValue[i-len];
			for(i=0;i<len;i++)Z.m_ulValue[i]=0;
		}
		X.Mov(X.Add(Z));
        Y.Mov(Y.Sub(A.Mul(Z)));
    }
    return X;
}

CBigInt CBigInt::Div(unsigned long A)
{
    CBigInt X;
    X.Mov(*this);
    if(X.m_nLength==1){X.m_ulValue[0]=X.m_ulValue[0]/A;return X;}
    unsigned __int64 div,mul;
    unsigned long carry=0;
    for(int i=X.m_nLength-1;i>=0;i--)
    {
        div=carry;
        div=(div<<32)+X.m_ulValue[i];
        X.m_ulValue[i]=(unsigned long)(div/A);
        mul=(div/A)*A;
        carry=(unsigned long)(div-mul);
    }
    if(X.m_ulValue[X.m_nLength-1]==0)X.m_nLength--;
    return X;
}

/****************************************************************************************
大數求模(條件:N為正數)
調用形式:N.Mod(A)
返回值:N%A  
****************************************************************************************/
CBigInt CBigInt::Mod(CBigInt& A)
{
    CBigInt X,Y;
	unsigned __int64 div,num;
    unsigned long carry=0;
	unsigned i,len;
    X.Mov(*this);
    while(X.Cmp(A)>=0)
    {
		div=X.m_ulValue[X.m_nLength-1];
		num=A.m_ulValue[A.m_nLength-1];
		len=X.m_nLength-A.m_nLength;
		if((div==num)&&(len==0)){X.Mov(X.Sub(A));break;}
		if((div<=num)&&len){len--;div=(div<<32)+X.m_ulValue[X.m_nLength-2];}
		div=div/(num+1);
		Y.Mov(div);
		Y.Mov(A.Mul(Y));
		if(len)
		{
			Y.m_nLength+=len;
			for(i=Y.m_nLength-1;i>=len;i--)Y.m_ulValue[i]=Y.m_ulValue[i-len];
			for(i=0;i<len;i++)Y.m_ulValue[i]=0;
		}
        X.Mov(X.Sub(Y));
    }
    return X;
}

unsigned long CBigInt::Mod(unsigned long A)
{
    if(m_nLength==1)return(m_ulValue[0]%A);
    unsigned __int64 div;
    unsigned long carry=0;
    for(int i=m_nLength-1;i>=0;i--)
    {
        div=m_ulValue[i];
		div+=carry*0x100000000;
        carry=(unsigned long)(div%A);
    }
    return carry;
}

/****************************************************************************************
從字符串按10進制或16進制格式輸入到大數
調用格式:N.Get(str,sys)
返回值:N被賦值為相應大數
sys暫時只能為10或16
****************************************************************************************/
void CBigInt::Get(CString& str, unsigned int system)
{
    int len=str.GetLength(),k;
    Mov(0);
    for(int i=0;i<len;i++)
    {
       Mov(Mul(system));
       if((str[i]>='0')&&(str[i]<='9'))k=str[i]-48;
       else if((str[i]>='A')&&(str[i]<='F'))k=str[i]-55;
       else if((str[i]>='a')&&(str[i]<='f'))k=str[i]-87;
       else k=0;
       Mov(Add(k));
    }
}

/****************************************************************************************
將大數按10進制或16進制格式輸出為字符串
調用格式:N.Put(str,sys)
返回值:無,參數str被賦值為N的sys進制字符串
sys暫時只能為10或16
****************************************************************************************/
void CBigInt::Put(CString& str, unsigned int system)
{
    if((m_nLength==1)&&(m_ulValue[0]==0)){str="0";return;}
	str="";
    CString t="0123456789ABCDEF";
    int a;
    char ch;
    CBigInt X;
    X.Mov(*this);
    while(X.m_ulValue[X.m_nLength-1]>0)
    {
        a=X.Mod(system);
        ch=t[a];
        str.Insert(0,ch);
        X.Mov(X.Div(system));
    }
}

/****************************************************************************************
求不定方程ax-by=1的最小整數解
調用方式:N.Euc(A)
返回值:X,滿足:NX mod A=1
****************************************************************************************/
CBigInt CBigInt::Euc(CBigInt& A)
{
	CBigInt M,E,X,Y,I,J;
    int x,y;
	M.Mov(A);
	E.Mov(*this);
	X.Mov(0);
	Y.Mov(1);
	x=y=1;
	while((E.m_nLength!=1)||(E.m_ulValue[0]!=0))
	{
		I.Mov(M.Div(E));
		J.Mov(M.Mod(E));
		M.Mov(E);
		E.Mov(J);
		J.Mov(Y);
		Y.Mov(Y.Mul(I));
		if(x==y)
		{
		    if(X.Cmp(Y)>=0)Y.Mov(X.Sub(Y));
			else{Y.Mov(Y.Sub(X));y=0;}
		}
		else{Y.Mov(X.Add(Y));x=1-x;y=1-y;}
		X.Mov(J);
	}
	if(x==0)X.Mov(A.Sub(X));
	return X;
}

/****************************************************************************************
求乘方的模
調用方式:N.RsaTrans(A,B)
返回值:X=N^A MOD B
****************************************************************************************/
CBigInt CBigInt::RsaTrans(CBigInt& A, CBigInt& B)
{
    CBigInt X,Y;
	int i,j,k;
	unsigned n;
	unsigned long num;
	k=A.m_nLength*32-32;
	num=A.m_ulValue[A.m_nLength-1];
	while(num){num=num>>1;k++;}
	X.Mov(*this);
	for(i=k-2;i>=0;i--)
	{
		Y.Mov(X.Mul(X.m_ulValue[X.m_nLength-1]));
		Y.Mov(Y.Mod(B));
        for(n=1;n<X.m_nLength;n++)
		{          
			for(j=Y.m_nLength;j>0;j--)Y.m_ulValue[j]=Y.m_ulValue[j-1];
			Y.m_ulValue[0]=0;
			Y.m_nLength++;
			Y.Mov(Y.Add(X.Mul(X.m_ulValue[X.m_nLength-n-1])));
			Y.Mov(Y.Mod(B));
		}
		X.Mov(Y);
		if((A.m_ulValue[i>>5]>>(i&31))&1)
		{
		    Y.Mov(Mul(X.m_ulValue[X.m_nLength-1]));
		    Y.Mov(Y.Mod(B));
            for(n=1;n<X.m_nLength;n++)
			{          
			    for(j=Y.m_nLength;j>0;j--)Y.m_ulValue[j]=Y.m_ulValue[j-1];
			    Y.m_ulValue[0]=0;
			    Y.m_nLength++;
			    Y.Mov(Y.Add(Mul(X.m_ulValue[X.m_nLength-n-1])));
			    Y.Mov(Y.Mod(B));
			}
		    X.Mov(Y);
		}
	}
    return X;
}

/****************************************************************************************
拉賓米勒算法測試素數
調用方式:N.Rab()
返回值:若N為素數,返回1,否則返回0
****************************************************************************************/
int CBigInt::Rab()
{
    unsigned i,j,pass;
    for(i=0;i<550;i++){if(Mod(PrimeTable[i])==0)return 0;}
    CBigInt S,A,I,K;
    K.Mov(*this);
	K.m_ulValue[0]--;
    for(i=0;i<5;i++)
    {
        pass=0;
        A.Mov(rand()*rand());
		S.Mov(K);
        while((S.m_ulValue[0]&1)==0)
		{
            for(j=0;j<S.m_nLength;j++)
			{
			    S.m_ulValue[j]=S.m_ulValue[j]>>1;
			    if(S.m_ulValue[j+1]&1)S.m_ulValue[j]=S.m_ulValue[j]|0x80000000;
			}
		    if(S.m_ulValue[S.m_nLength-1]==0)S.m_nLength--;
			I.Mov(A.RsaTrans(S,*this));
			if(I.Cmp(K)==0){pass=1;break;}
		}
		if((I.m_nLength==1)&&(I.m_ulValue[0]==1))pass=1;
		if(pass==0)return 0;
	}
    return 1;
}

/****************************************************************************************
產生隨機素數
調用方法:N.GetPrime(bits)
返回值:N被賦值為一個bits位(0x100000000進制長度)的素數
****************************************************************************************/
void CBigInt::GetPrime(int bits)
{
    unsigned i;
    m_nLength=bits;
begin:
	for(i=0;i<m_nLength;i++)m_ulValue[i]=rand()*0x10000+rand();
    m_ulValue[0]=m_ulValue[0]|1;
	for(i=m_nLength-1;i>0;i--)
	{
		m_ulValue[i]=m_ulValue[i]<<1;
		if(m_ulValue[i-1]&0x80000000)m_ulValue[i]++;
	}
	m_ulValue[0]=m_ulValue[0]<<1;
	m_ulValue[0]++;
    for(i=0;i<550;i++){if(Mod(PrimeTable[i])==0)goto begin;}
    CBigInt S,A,I,K;
    K.Mov(*this);
	K.m_ulValue[0]--;
    for(i=0;i<5;i++)
	{
        A.Mov(rand()*rand());
	    S.Mov(K.Div(2));
	    I.Mov(A.RsaTrans(S,*this));
	    if(((I.m_nLength!=1)||(I.m_ulValue[0]!=1))&&(I.Cmp(K)!=0))
			goto begin;
	}
}

void CBigInt::GetBigInt(int bits)
{
    unsigned i;
    m_nLength=bits;

	for(i=0;i<m_nLength;i++)m_ulValue[i]=rand()*0x10000+rand();
    
	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久伊99综合婷婷久久伊| 亚洲国产色一区| 一级精品视频在线观看宜春院| 日韩精品免费视频人成| 成人免费看的视频| 这里只有精品视频在线观看| 中文字幕一区二区5566日韩| 蜜臀av在线播放一区二区三区| 99久久久国产精品免费蜜臀| 日韩区在线观看| 亚洲国产欧美日韩另类综合| www.日韩大片| 国产亚洲精品aa| 麻豆极品一区二区三区| 在线观看不卡视频| 亚洲欧洲日韩在线| 国产高清精品久久久久| 日韩一级黄色片| 亚洲成av人片一区二区梦乃| 一本一道综合狠狠老| 国产欧美日韩一区二区三区在线观看| 亚洲一级二级在线| 一本一本久久a久久精品综合麻豆| 久久久av毛片精品| 另类小说一区二区三区| 欧美三级视频在线播放| 亚洲日本欧美天堂| 波多野结衣中文字幕一区二区三区 | **网站欧美大片在线观看| 韩国成人在线视频| 26uuu国产在线精品一区二区| 美女爽到高潮91| 精品国产乱码久久久久久免费 | 国产成人免费在线观看不卡| 精品久久久久久久久久久久久久久久久| 亚洲国产综合人成综合网站| 欧美日韩国产系列| 日本不卡123| 日韩免费电影一区| 国模少妇一区二区三区| 久久久久国产精品人| 高清视频一区二区| 亚洲色图视频网| 欧美视频精品在线| 午夜欧美大尺度福利影院在线看| 91精品国产福利在线观看 | 亚洲精品国产成人久久av盗摄| 色94色欧美sute亚洲线路一ni| 亚洲一区免费观看| 日韩一区二区三区在线视频| 国产美女精品一区二区三区| 国产精品美女视频| 欧美三级日本三级少妇99| 日韩av网站免费在线| 久久精品无码一区二区三区| 成人免费黄色大片| 亚洲成人免费看| 久久久亚洲精品一区二区三区 | 高清视频一区二区| 亚洲免费观看高清完整版在线观看熊| 欧美日韩免费高清一区色橹橹 | 一本大道久久a久久综合婷婷| 亚洲狠狠爱一区二区三区| 精品久久久久久无| 97精品电影院| 美美哒免费高清在线观看视频一区二区| 精品国产第一区二区三区观看体验| 丰满放荡岳乱妇91ww| 亚洲一区电影777| 国产人成一区二区三区影院| 欧美精品三级日韩久久| 成人激情文学综合网| 三级在线观看一区二区| 欧美激情一二三区| 7777精品伊人久久久大香线蕉的| 国产精品亚洲人在线观看| 亚洲成人免费视| 中文字幕一区二区三区在线不卡 | 日韩毛片高清在线播放| 91麻豆精品91久久久久久清纯| 国产成人午夜精品5599 | 日韩一级免费观看| 91免费观看视频| 久久成人羞羞网站| 亚洲第一狼人社区| 日韩一区中文字幕| 久久午夜电影网| 欧美精品亚洲一区二区在线播放| 成人av电影在线观看| 久久精品免费观看| 婷婷亚洲久悠悠色悠在线播放| 最新国产の精品合集bt伙计| 久久日韩粉嫩一区二区三区| 欧美人xxxx| 欧美自拍丝袜亚洲| 成人一道本在线| 国产精品综合二区| 久久精品国产99国产精品| 一区二区三区.www| 亚洲欧美日韩国产中文在线| 中文字幕乱码久久午夜不卡 | 国产一区 二区 三区一级| 人人狠狠综合久久亚洲| 婷婷开心久久网| 亚洲福利一二三区| 亚洲国产精品麻豆| 日韩理论在线观看| 国产精品国产三级国产普通话蜜臀 | 国产精品家庭影院| 亚洲国产精品成人综合| 欧美第一区第二区| 精品久久久久久无| 欧美成人一区二区三区片免费| 91精品一区二区三区在线观看| 精品1区2区3区| 欧美日韩国产大片| 欧美精品色综合| 91精品欧美综合在线观看最新| 欧美日本一区二区在线观看| 欧美日本免费一区二区三区| 欧美日韩高清一区| 69堂成人精品免费视频| 日韩视频一区二区在线观看| 日韩精品一区二区三区视频| 精品国产麻豆免费人成网站| 久久久精品日韩欧美| 国产精品无码永久免费888| 国产精品国产自产拍在线| 亚洲欧美一区二区在线观看| 亚洲一二三区在线观看| 婷婷中文字幕一区三区| 韩国一区二区视频| 成人18视频日本| 欧美日韩另类国产亚洲欧美一级| 欧美一区二区视频在线观看2022| 2020国产精品自拍| 国产精品久久久久久久久搜平片| 亚洲美女在线国产| 日韩电影在线一区| 国产精品18久久久久久vr| 成a人片亚洲日本久久| 欧美亚洲综合在线| 精品国内二区三区| 成人欧美一区二区三区| 狠狠色丁香久久婷婷综合_中| 岛国一区二区三区| 欧美日韩亚洲综合| 久久久久久久久一| 亚洲一区二区三区四区在线免费观看 | 亚洲日本在线天堂| 免费看精品久久片| 99视频在线精品| 欧美一级黄色片| 亚洲色图另类专区| 九一久久久久久| 日本高清不卡aⅴ免费网站| 欧美成人猛片aaaaaaa| 亚洲摸摸操操av| 激情五月播播久久久精品| 色诱亚洲精品久久久久久| 日韩精品一区二区三区视频播放| 国产精品白丝在线| 久久精品久久综合| 91激情在线视频| 久久网站最新地址| 日韩制服丝袜av| 99久久99久久免费精品蜜臀| 欧美电影免费观看高清完整版在线观看 | xf在线a精品一区二区视频网站| 亚洲色大成网站www久久九九| 免费在线看一区| 日本道精品一区二区三区| 精品盗摄一区二区三区| 亚洲一区国产视频| 91在线视频18| 中日韩av电影| 国产老肥熟一区二区三区| 日韩一区二区在线播放| 亚洲风情在线资源站| 91原创在线视频| 国产精品久久久久久亚洲毛片| 国产一区美女在线| 日韩视频在线永久播放| 亚洲超丰满肉感bbw| 91丨九色porny丨蝌蚪| 中文字幕欧美国产| 国产精品亚洲成人| 国产亚洲欧洲997久久综合| 免费三级欧美电影| 这里只有精品电影| 石原莉奈一区二区三区在线观看| 欧美性生活久久| 一区二区三区久久| 欧美性受xxxx黑人xyx| 亚洲自拍偷拍九九九| 在线日韩一区二区| 一区二区三区毛片| 欧美日韩国产综合一区二区三区| 亚洲免费资源在线播放| 日本韩国欧美一区|