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

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

?? rsaupper.cpp

?? 對RSA算法進行研究
?? CPP
字號:
// RSAUpper.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#define TRUE 1
#define FALSE 0
#define VLONG    unsigned long
//參考書:《計算機密碼學》(第二版)盧開澄 清華大學出版社
//模冪算法,快速計算:x^r(mod p),p76
VLONG MONmod(VLONG x,VLONG r,VLONG p)
{
	VLONG a,b,c;
	a=x;
	b=r;
	c=1;
	while (b!=0)
	{
		if ((b&0x01)==0)
		{
			b=b/2;
			a=(a*a)%p;
		}
		else
		{
			b=b-1;
			c=(a*c)%p;
		}
	}
	return c;
}
/*
 * Rabin-Miller
 * 這是個很容易且廣泛使用的簡單算法,它基于Gary Miller的部分象法,
 * 有Michael Rabin發展。事實上,這是在NIST的DSS建議中推薦的算法的一個簡化版。 
 * 首先選擇一個代測的隨機數p,計算b,b是2整除p-1的次數。然后計算m,使得n=1+(2^b)m。
 * (1) 選擇一個小于p的隨機數a。
 * (2) 設j=0且z=a^m mod p
 * (3) 如果z=1或z=p-1,那麼p通過測試,可能使素數
 * (4) 如果j>0且z=1, 那麼p不是素數
 * (5) 設j=j+1。如果j<b且z<>p-1,設z=z^2 mod p,然后回到(4)。
 *       如果z=p-1,那麼p通過測試,可能為素數。
 * (6) 如果j=b 且z<>p-1,不是素數
 * 這個測試較前一個速度快。數a被當成證據的概率為75%。這意味著當迭代次數為t時,它產生一個假的素數所花
 * 費的時間不超過1/4^t。實際上,對大多數隨機數,幾乎99.99%肯定a是證據。

 * 實際考慮:
 * 在實際算法,產生素數是很快的。
 * (1) 產生一個n-位的隨機數p
 * (2) 設高位和低位為1(設高位是為了保證位數,設低位是為了保證位奇數)
 * (3) 檢查以確保p不能被任何小素數整除:如3,5,7,11等等。有效的方法
 *       是測試小于2000的素數。使用字輪方法更快
 * (4) 對某隨機數a運行Rabin-Miller檢測,如果p通過,則另外產生一個隨機
 *		 數a,在測試。選取較小的a值,以保證速度。做5次 Rabin-Miller測試如
 *		 果p在其中失敗,從新產生p,再測試。
 */
//參考書:《計算機密碼學》(第二版)盧開澄 清華大學出版社
//模冪算法,素數的米勒-勒賓(MIller-Rabin)概率測試法,p151
//輸入:被 b要檢測的數字,n素數產生的范圍滿足:(2<=b<n-1)
bool TestPrimeNum(VLONG b,VLONG n)
{
	VLONG m=1;
	VLONG l=0;
	VLONG V;
	VLONG i;
	while (m<(n-1)){m=m*2;l++;}
	if ((b<2)||(b>=(n-1))) return (false);
	V=MONmod(b,m,n);
	if (V==1) return (true);
	i=1;
	do
	{
		if (V==(n-1)) return (true);
		if (i==l) return (false);
		V=MONmod(V,2,n);
		i++;
	}
	while (1);
	return(false);
}
//參考書:《計算機密碼學》(第二版)盧開澄 清華大學出版社
//求gcd{n1,n2}的快速算法,快速計算:gcd{n1,n2}=an1+bn2,p132
VLONG gcd(VLONG /*mod*/ n1,VLONG n2)
{
	VLONG c;
	VLONG t;
	if ((n1<0) || (n2<=0)) return 0;
	//s1
	c=0;
	//s2
	while ((n1%2==0)&&(n2%2==0))
	{
		n1=n1/2;
		n2=n2/2;
		c++;
	}
	//s3
	if  (n2%2==0)
	{
		t=n1;
		n1=n2;
		n2=t;
	}

	do
	{		
		//s4
		while (n1%2==0)
		{
			n1=n1/2;
		}
		//s5
		if ((long)(n1-n2)<0)
		{
			t=n1;
			n1=n2;
			n2=t;
		}
		//s6
		n1=(n1-n2)/2;
	}
	while (n1!=0);
	
	return (n2<<c);
}

//參考書:《計算機密碼學》(第二版)盧開澄 清華大學出版社
//求u mod m的逆元素算法,快速計算:gcd{u,m}=au+bm=1,p136(替換getD)
VLONG Reciprocal_u(VLONG /*mod*/ m,VLONG u)
{
	VLONG n1=m;
	VLONG n2=u;
	long b1=0;
	long b2=1;
	long t;
	VLONG q;
	VLONG r;
	do
	{
		q=n1/n2;
		r=n1-q*n2;
		if (r==0) break;
		n1=n2;
		n2=r;
		t=b2;
		b2=b1-q*b2;
		b1=t;
	}
	while (1);

	if (n2!=1)
		return (0);   //不存在
	if (b2<0)
		return (b2+m);
	else
		return (b2);
}
//解密
VLONG decrypt(VLONG c,VLONG n, VLONG d)
{
	VLONG i,g,f;
	if (d%2==0) g=1; else g=c;
	for (i=1;i<=d/2;i++)
	{
		f=c*c % n;
		g=f*g % n;
	}
	return(g);
}
VLONG getD( VLONG e, VLONG PHI)
{
	VLONG u[3]={1,0,PHI};
	VLONG v[3]={0,1,e};
	VLONG q,temp1,temp2,temp3;
	while (v[2]!=0)
	{
		q=floor(u[2]/v[2]);
		temp1=u[0]-q*v[0];
		temp2=u[1]-q*v[1];
		temp3=u[2]-q*v[2];
		u[0]=v[0];
		u[1]=v[1];
		u[2]=v[2];
		v[0]=temp1;
		v[1]=temp2;
		v[2]=temp3;
	}
	if (u[1]<0) 
	     return(u[1]+PHI);
	else 
	     return(u[1]);
}
VLONG get_common_denom(VLONG e, VLONG PHI)
{
	VLONG great,temp,a;
	if (e >PHI)
	{
		while (e % PHI != 0)
		{
			temp= e % PHI;
			e =PHI;
			PHI = temp;
		}
		great = PHI;
	} 
	else
	{
		while (PHI % e != 0)
		{
			a = PHI % e;
			PHI = e;
			e = a;
		}
		great = e;
	}
	return(great);
}

VLONG getE( VLONG PHI)
{
	VLONG great=0, e=2;
	while (great!=1)
	{
		e=e+1;
		great = gcd(e,PHI);
	}
	return(e);
}
void get_prime( VLONG *val)
{
	#define NO_PRIMES 39
	VLONG primes[NO_PRIMES]={3,5,7,11,13,
		                     17,19,23,29,31,
							 37,41,43,53,59,
							 61,67,71,101,103,97,
							 107,109,113,127,131,
							 137,139,149,151,157,
							 163,167,173,179,181,
							 191,193,197};
	VLONG prime,i;
	
	do
	{
		prime=FALSE;
		printf("Enter a prime number >> ");
		scanf("%ld",val);
		for (i=0;i<NO_PRIMES;i++)
			if (*val==primes[i]) 
				prime=TRUE;
	} 
	while (prime==FALSE);
}

int main(int argc, char* argv[])
{
	VLONG a,b,n,e,PHI,d,m,c;
	/*
	a=MONmod(123,7,187);
	a=MONmod(183,7,187);
	a=MONmod(72,7,187);
	a=MONmod(30,7,187);
	a=MONmod(1520,13,2537);
	a=get_common_denom(18,12);
	a=gcd(18,12);
	*/
    //bool result=TestPrimeNum(3,100);
	//result=TestPrimeNum(17,100);
	//result=TestPrimeNum(19,100);
	//result=TestPrimeNum(2001,10000);
	get_prime(&a);
	get_prime(&b);
	
	n=a*b;
	PHI=(a-1)*(b-1);
	e=getE(PHI);
	d= Reciprocal_u(PHI,e);
	printf("Enter input value >> "); 
	scanf("%ld",&m);
	printf("a=%ld b=%ld n=%ld PHI=%ld\n",a,b,n,PHI);
	//模冪算法,快速計算:x^r(mod p),p76
    //VLONG MONmod(VLONG x,VLONG r,VLONG p)
	c=(VLONG)pow(m,e) % n; /* note, this may overflow with large numbers */
	//c=MONmod(5,173,323);
	//c=MONmod(5,173,323);
	
	c=MONmod(m,e,n);
	/* when e is relatively large */
	printf("encrypt Message is %ld \n",c);
	printf("e=%ld d=%ld c=%ld\n",e,d,c);
	m=decrypt(c,n,d); /* this function required as c to */
	/*the power of d causes an overflow */
	printf("decrypt Message is %ld \n",m);
	scanf("");
	return(0);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美欧美午夜aⅴ在线观看| 亚洲精品自拍动漫在线| 亚洲美女少妇撒尿| 九色|91porny| 欧美巨大另类极品videosbest| 国产欧美一区在线| 免费人成网站在线观看欧美高清| 91网站最新网址| 久久久精品蜜桃| 久久99精品久久只有精品| 欧美视频完全免费看| 国产精品电影一区二区| 国产不卡视频在线观看| 精品免费日韩av| 天天综合色天天综合色h| 色综合久久九月婷婷色综合| 中文字幕精品三区| 国产寡妇亲子伦一区二区| 精品国产不卡一区二区三区| 亚洲成人av在线电影| 在线看不卡av| 亚洲男人的天堂av| 在线看一区二区| 一个色在线综合| 91久久免费观看| 亚洲黄色小视频| 在线观看精品一区| 亚洲激情图片小说视频| 欧美中文一区二区三区| 一区二区三区精品在线| 在线观看视频欧美| 亚洲综合在线视频| 欧美性生活久久| 五月天激情综合网| 欧美一区日本一区韩国一区| 亚洲成av人**亚洲成av**| 91麻豆精品国产自产在线观看一区| 亚洲第四色夜色| 欧美一二三区在线观看| 国内久久精品视频| 欧美国产精品劲爆| 色综合夜色一区| 亚洲午夜电影在线| 日韩欧美不卡一区| 国产一区二区三区香蕉| 国产精品免费丝袜| 色婷婷综合久久久中文一区二区| 亚洲老妇xxxxxx| 欧美日韩高清一区| 另类综合日韩欧美亚洲| 久久精品人人做人人综合| 懂色av一区二区在线播放| 亚洲免费视频成人| 日韩欧美另类在线| 不卡的电影网站| 一区二区三区四区在线播放| 91精品中文字幕一区二区三区| 久久99国产精品久久| 亚洲视频一二三| 91精品国产综合久久福利| 精品一区二区三区蜜桃| 亚洲欧美一区二区三区国产精品 | 国产精品18久久久久久久网站| 欧美国产综合一区二区| 欧美在线免费观看亚洲| 韩日av一区二区| 中文字幕一区二区在线观看| 欧美日韩久久久一区| 国产**成人网毛片九色 | 国产精品久久久久影院亚瑟| 精品视频1区2区| 国产成人精品一区二| 午夜在线电影亚洲一区| 亚洲国产精品高清| 日韩三级伦理片妻子的秘密按摩| 91在线精品秘密一区二区| 奇米一区二区三区| 亚洲三级免费观看| 精品久久久三级丝袜| 欧美日韩一卡二卡三卡| 成人av综合在线| 久久er99精品| 亚洲国产中文字幕在线视频综合| 久久精品男人的天堂| 日韩一区二区在线观看视频| 色婷婷亚洲精品| 国产盗摄女厕一区二区三区| 亚洲6080在线| 亚洲激情五月婷婷| 国产欧美一区二区精品久导航 | 蜜乳av一区二区| 亚洲精品国产a久久久久久| 亚洲精品一区二区三区影院 | 欧美bbbbb| 亚洲二区在线观看| 亚洲免费色视频| 国产精品不卡一区二区三区| 久久这里只精品最新地址| 91超碰这里只有精品国产| 欧美性受极品xxxx喷水| 色婷婷亚洲一区二区三区| 972aa.com艺术欧美| 国产成人精品免费| 韩国三级电影一区二区| 另类成人小视频在线| 日韩高清在线观看| 三级欧美在线一区| 亚洲午夜在线观看视频在线| 1区2区3区国产精品| 国产精品不卡一区二区三区| 国产精品白丝在线| 欧美高清在线视频| 国产精品国产三级国产有无不卡| 久久夜色精品一区| 久久夜色精品国产噜噜av| 久久午夜老司机| 国产亚洲一区二区三区在线观看 | 日韩欧美一区二区视频| 欧美日产在线观看| 制服视频三区第一页精品| 欧美一区在线视频| 欧美电影免费观看高清完整版在线观看 | 久久久久国产一区二区三区四区| 欧美一卡二卡三卡四卡| 欧美一区二区精美| 久久午夜色播影院免费高清| 日本一区二区免费在线观看视频| 欧美mv日韩mv国产| 国产午夜亚洲精品理论片色戒 | 久久这里只有精品视频网| 久久久久久电影| 亚洲欧美一区二区在线观看| 一区二区视频在线看| 午夜精品成人在线视频| 国产综合色产在线精品| 成人黄色777网| 欧美日韩欧美一区二区| 日韩欧美一区二区三区在线| 中文字幕高清不卡| 五月综合激情日本mⅴ| 国产激情视频一区二区在线观看 | 欧美主播一区二区三区美女| 5858s免费视频成人| 国产亚洲制服色| 亚洲一区二区在线观看视频| 久久97超碰国产精品超碰| 99麻豆久久久国产精品免费| 欧美日韩亚洲另类| 久久亚洲欧美国产精品乐播| 亚洲精品乱码久久久久久| 日本欧美一区二区三区| av激情综合网| 日韩一区二区电影| 亚洲视频一区在线观看| 黄页视频在线91| 欧美日韩一区二区欧美激情 | 欧美不卡一区二区三区四区| 国产精品乱码人人做人人爱 | 久久久久久久久久电影| 亚洲欧美激情视频在线观看一区二区三区 | 成人性生交大片免费看视频在线| 欧美探花视频资源| 国产精品久久久一本精品 | 五月激情六月综合| a4yy欧美一区二区三区| 日韩女优av电影| 午夜欧美视频在线观看| www.日韩av| 91精品国产综合久久精品app| 国产精品高清亚洲| 国产精品99久| 欧美一区2区视频在线观看| 一区二区高清视频在线观看| 国产成人av电影在线观看| 91精品久久久久久久久99蜜臂| 亚洲人午夜精品天堂一二香蕉| 精品一区二区三区在线观看国产| 欧美三级电影在线观看| 国产精品久久国产精麻豆99网站| 精品一二三四区| 欧美一区二区视频免费观看| 亚洲一区二区三区视频在线| 波多野结衣中文字幕一区二区三区 | 一区二区成人在线观看| 成熟亚洲日本毛茸茸凸凹| 日韩亚洲电影在线| 日韩精品一卡二卡三卡四卡无卡| 91福利视频网站| 玉足女爽爽91| 欧洲精品视频在线观看| 一级女性全黄久久生活片免费| 99久久精品免费看| 亚洲日本va午夜在线影院| 99久久er热在这里只有精品66| 国产精品乱子久久久久| 91一区二区在线| 亚洲一二三区不卡| 欧美欧美欧美欧美| 老司机精品视频一区二区三区| 欧美一区二区三区喷汁尤物|