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

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

?? bigint.cpp

?? 簡單的RSA算法的加密解密程序
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
			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;
}

/****************************************************************************************
大數(shù)求模
調(diào)用形式: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;
}

/****************************************************************************************
從字符串按設(shè)定進制格式輸入到大數(shù)
調(diào)用格式:N.Get(str,sys)
返回值:N被賦值為相應(yīng)大數(shù)
sys即進制數(shù)
****************************************************************************************/
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]<='Z'))k=str[i]-55;
       else if((str[i]>='a')&&(str[i]<='z'))k=str[i]-61;
       else k=62;
	   //if ((str[i]>=42)&&(str[i]<=122)) k=str[i]-42;
	   //else k=62;
       Mov(Add(k));
    }
}

/****************************************************************************************
從字符串按設(shè)定進制格式輸入到大數(shù)
調(diào)用格式:N.GetLast(str,sys)
返回值:N被賦值為相應(yīng)大數(shù)
sys即進制數(shù)
****************************************************************************************/
void CBigInt::GetLast(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]<='Z'))k=str[i];//-55;
       else if((str[i]>='a')&&(str[i]<='z'))k=str[i];//-87;
       else k=0;
	   
       Mov(Add(k));
    }
}

/****************************************************************************************
將大數(shù)按設(shè)定進制格式輸出為字符串
調(diào)用格式:N.Put(str,sys)
返回值:無,參數(shù)str被賦值為N的sys進制字符串
sys即進制數(shù)
****************************************************************************************/
void CBigInt::Put(CString& str, unsigned int system)
{
    if((m_nLength==1)&&(m_ulValue[0]==0)){str="0";return;}
	str="";
    CString t="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ";
    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的最小整數(shù)解
調(diào)用方式: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;
}

/****************************************************************************************
求乘方的模
調(diào)用方式: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;
}

/****************************************************************************************
拉賓米勒算法測試素數(shù)    正確率達99.99%
調(diào)用方式:N.Rab()
返回值:若N為素數(shù),返回1,否則返回0     
****************************************************************************************/
int CBigInt::Rab()
{
    unsigned i,j,pass;    
    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;
}

/****************************************************************************************
產(chǎn)生隨機素數(shù)
調(diào)用方法:N.GetPrime(bits)
返回值:N被賦值為一個bits位(0x100000000進制長度)的素數(shù)
****************************************************************************************/
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 K;
    K.Mov(*this);	
	if(K.Rab()==0) goto begin;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日韩在线| 激情欧美一区二区| 久久成人免费日本黄色| a级精品国产片在线观看| 日韩亚洲欧美一区| 亚洲自拍都市欧美小说| 成人av电影在线网| 精品精品欲导航| 亚洲第一久久影院| 色综合天天综合在线视频| 久久青草国产手机看片福利盒子| 亚洲图片欧美视频| 日本高清成人免费播放| 国产精品每日更新在线播放网址| 久久99国产精品久久99果冻传媒| 欧美性猛交xxxxxxxx| 18欧美亚洲精品| 国产福利一区二区三区| 精品国产乱码久久久久久牛牛 | 91亚洲午夜精品久久久久久| 久久亚区不卡日本| 精品综合免费视频观看| 6080午夜不卡| 午夜伦理一区二区| 欧美精品三级在线观看| 亚洲mv在线观看| 欧美日韩国产精品成人| 天天综合色天天| 91精品免费在线观看| 天堂影院一区二区| 欧美一级欧美一级在线播放| 婷婷激情综合网| 91精品国模一区二区三区| 视频在线观看一区二区三区| 欧美日韩精品一区二区三区| 婷婷开心激情综合| 日韩精品中文字幕在线一区| 人人狠狠综合久久亚洲| 日韩欧美一级特黄在线播放| 蜜桃av一区二区| 日韩精品专区在线影院重磅| 91免费在线视频观看| 亚洲免费观看在线视频| 在线中文字幕一区二区| 亚瑟在线精品视频| 日韩免费福利电影在线观看| 精品一区二区三区视频| 中文欧美字幕免费| 一本一道久久a久久精品综合蜜臀| 亚洲色图制服诱惑| 欧美三级电影精品| 久久精品国产亚洲一区二区三区| 国产清纯美女被跳蛋高潮一区二区久久w| 国产成人无遮挡在线视频| 国产精品毛片高清在线完整版| 91麻豆免费看| 日本中文字幕一区二区视频| 26uuu久久综合| 99国产欧美另类久久久精品| 亚洲电影中文字幕在线观看| 欧美成人a视频| 波多野结衣中文字幕一区 | 日韩av成人高清| 久久久综合激的五月天| 91浏览器入口在线观看| 毛片av一区二区三区| 国产精品理论在线观看| 制服.丝袜.亚洲.中文.综合| 国产在线国偷精品免费看| 亚洲色图另类专区| 69久久99精品久久久久婷婷 | 欧美国产97人人爽人人喊| 日本高清不卡一区| 国产精品一区二区久久精品爱涩 | 国产精品久久福利| 91精品蜜臀在线一区尤物| 成人精品国产免费网站| 蜜桃免费网站一区二区三区| 中国av一区二区三区| 日韩女优视频免费观看| 欧美专区日韩专区| 懂色av中文一区二区三区| 日本成人在线网站| 亚洲色图20p| 国产日韩欧美精品在线| 91精品国产乱码| 91精品91久久久中77777| 国产精品系列在线播放| 日本午夜精品一区二区三区电影| 亚洲欧美视频在线观看视频| 久久久久久久综合色一本| 欧美高清视频不卡网| 色综合久久天天| 成人精品国产一区二区4080| 免费成人av在线播放| 亚洲国产美女搞黄色| 亚洲人成网站影音先锋播放| 久久综合色播五月| 日韩欧美综合一区| 欧美四级电影网| 色哟哟精品一区| 成人av中文字幕| 国产 日韩 欧美大片| 国产美女精品人人做人人爽| 久久国产日韩欧美精品| 日本va欧美va瓶| 首页欧美精品中文字幕| 婷婷丁香激情综合| 亚洲第一精品在线| 亚洲小少妇裸体bbw| 亚洲一区二区三区激情| 一二三四区精品视频| 亚洲一区在线播放| 亚洲成av人片www| 99久久精品国产观看| 高清久久久久久| 成人黄动漫网站免费app| 成人av电影在线播放| 9l国产精品久久久久麻豆| heyzo一本久久综合| av不卡一区二区三区| 99免费精品在线| 91久久奴性调教| 欧美一a一片一级一片| 91精品在线免费| 日韩精品中文字幕一区二区三区 | 男男gaygay亚洲| 蜜桃久久久久久久| 国产一区久久久| 成人美女在线观看| 在线观看一区日韩| 欧美一区二区播放| 26uuu亚洲| 亚洲欧洲综合另类在线| 五月天婷婷综合| 黄色精品一二区| 99精品久久只有精品| 欧美日韩免费观看一区二区三区| 欧美日韩日日骚| 精品久久久久一区二区国产| 国产精品人人做人人爽人人添| 亚洲视频在线一区| 蜜臀av一区二区| 成人理论电影网| 欧美日韩五月天| 国产喷白浆一区二区三区| 一区二区三区视频在线观看| 日韩经典一区二区| 成人av网站免费观看| 欧美女孩性生活视频| 久久蜜桃一区二区| 亚洲国产精品一区二区www在线 | 麻豆91免费看| 成人黄色在线看| 91精品国产91热久久久做人人| 久久久综合视频| 天天色天天爱天天射综合| 懂色av中文一区二区三区| 欧美剧在线免费观看网站| 亚洲国产成人在线| 亚洲不卡一区二区三区| 不卡电影一区二区三区| 欧美一区二区视频在线观看| 国产精品国产三级国产aⅴ原创| 日韩成人午夜精品| 色老头久久综合| 久久精品亚洲一区二区三区浴池| 亚洲国产日韩综合久久精品| 国产成人免费在线观看不卡| 欧美一级高清片在线观看| 亚洲美女免费在线| 国产超碰在线一区| 欧美一区二区性放荡片| 亚洲精品国久久99热| 国产激情一区二区三区四区| 欧美高清www午色夜在线视频| 亚洲欧洲制服丝袜| 成人国产一区二区三区精品| 精品国产免费一区二区三区香蕉| 午夜精品久久久久久久99樱桃| 99久久99久久精品免费观看| 国产女主播视频一区二区| 精品一区二区三区视频在线观看| 9191成人精品久久| 一区二区三区不卡视频在线观看 | 欧美精品高清视频| 亚洲人成亚洲人成在线观看图片| 粉嫩嫩av羞羞动漫久久久| 精品蜜桃在线看| 久久se精品一区精品二区| 欧美丰满少妇xxxxx高潮对白| 一区二区三区在线免费| 99九九99九九九视频精品| 国产日韩欧美高清| 国产成人精品一区二区三区四区| 精品国产乱码久久久久久久| 狠狠色丁香九九婷婷综合五月| 日韩精品专区在线影院观看| 精品亚洲欧美一区| 久久精品亚洲一区二区三区浴池|