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

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

?? makekey.java

?? 用JAVA做的一個RSA加密解密程序,能實現密鑰的生成并且對文件進行加密和解密
?? JAVA
字號:
import java.io.*;

public class makekey 
{
	/**RSA算法中的數據元素
	*pub_n->n
	*pub_q->q
	*pub_p->p
	*pub_e->e
	*pub_d->d
	*/
	long pub_n,pub_q,pub_p,pub_e,pub_d;
	
	/** witness算法(用來檢測一個元素是否是素數
	 *<P>pre:none.
	 *<P>post:dicide whether the number inputed is a element number.
	 *@param n the number to test.
	*/
	boolean witness(long n)
	{
		//測試次數的計數器
		int counter=0;
		//將n-1轉化程二進制字符串b
		String b=Long.toBinaryString(n-1);

		while(true)
		{
			//隨機產生一個a
			long a=(long)((n-1)*Math.random()+1);
			long d=1;
			
			for(int i=b.length()-1;i>=0;i--)
			{
				long x=d;
				d=(x*x)%n;
				if(d==1&&x!=1&&x!=n-1)
					return false;
			    /**測試代碼
				System.out.println("i="+i+" x="+x+" d="+d+" b"+i+"="+b.charAt(b.length()-1-i));
				*/
				if(b.charAt(b.length()-1-i)=='1')
					d=(d*a)%n;
			}
			if(d==1)
				counter++;
			else return false;

			//如果連續100個a都通過檢測,則假設n是一個素數。(經試驗這種算法安全)
			//如果假設錯誤,在構造函數中還有一層保護
			if(counter>=100)
				return true;
		}
	}
	
	/**返回一個指定大小的素數(與參數最接近)
	 *<P>pre:None.
	 *<P>post:return a element number that approximate the parameter.
	 *@param max_num to limit,or to say confin,the generating number.
	*/
	long eleGenerator(long max_num)
	{
		long p=(long)(Math.random()*max_num+1);
		//使p為奇數
		p=p%2==0?p+1:p;
		//用witness算法檢p是否為素數
		while(!witness(p))
			p-=2;
		return p;
	}
	
	/**產生RSA中的p、q、n and e
	 *<P>pre:None.
	 *<P>post:generate "p、q、n、e" in RSA.
	*/
	void PQNEDGenerator()
	{
	//p的范圍定在2^30這個數量級(eleGenerator的具體內容見上)
		pub_p=eleGenerator((long)(Math.random()*Math.pow(2,30)));
	//q的范圍定在2^20這個數量級,與p大概相隔4個十進制以避免受到攻擊(eleGenerator的具體內容見上)
		pub_q=eleGenerator((long)(Math.random()*Math.pow(2,20)));
	//生成n
		pub_n=pub_p*pub_q;
	//e的生成
		pub_e=(long)((pub_p-1)*(pub_q-1)*Math.random());
		//使e為奇數
		pub_e=pub_e%2==0?pub_e-1:pub_e;
		pub_d=stein(pub_e,(pub_p-1)*(pub_q-1));
		while(pub_d==-999)
		{
			pub_e-=2;
			pub_d=stein(pub_e,(pub_p-1)*(pub_q-1));
		}
	}

	/**Stein算法(計算(e,m),又在(e,m)=1的情況下算出e對于模m的逆元)
	 *<P>pre:none.
	 *<P>post:判斷(e,m)是否等于1。如果不等于1返回-999,如果等于1返回e對于模m的逆元。
	 *@param e Stein算法中的"e".
	 *@param m Stein算法中的"m".
	*/
	long stein(long e,long m)
	{
		long s0,s,r,r0,x,y,u,v;
		s0=s=e;
		r0=r=m;
		x=v=0;
		y=u=1;

		while(r!=0)
		{
			/**調試代碼
			System.out.println("r="+r);
			System.out.println("u="+u);
			*/
			if(r%2==1)
			{
				if(s>r)
				{
					long temp=s;s=r;r=temp;
					temp=x;x=u;u=temp;
					temp=y;y=v;v=temp;
				}
				r-=s;x-=u;y-=v;
			}
			else
				if(y%2==0)
				{
					r/=2;x/=2;y/=2;
				}
				else
				{
					if(y<0)
					{
						r/=2;
						y=(y+s0)/2;
						x=(x-r0)/2;
					}
					else
					{
						r/=2;
						y=(y-s0)/2;
						x=(x+r0)/2;
					}
				}
		}
		if(s==1)
			return u%m<0?u%m+m:u%m;
		else return -999;
	}
	/**計算有可能溢出的模m的整數冪的算法
	 *<P>pre:none.
	 *<P>post:返回a^t(mod n);
	 *@param a a^t(mod n)中的a
	 *@param t a^t(mod n)中的t
	 *@param n a^t(mod n)中的n
	*/
	long powMod(long a,long t,long n)
	{
		long c=0;
		long d=1;
		String b=Long.toBinaryString(t);
		
		for(int i=b.length()-1;i>=0;i--)
		{
			c*=2;
			d=(d*d)%n;
			if(b.charAt((b.length()-1-i))=='1')
			{
				c+=1;
				d=(d*a)%n;
			}
			/**調試代碼
			System.out.print("i="+i);
			System.out.print(" c="+c);
			System.out.print(" d="+d);
			System.out.println();
			*/
		}
		return d;
	}
		

	/**構造函數
	 *<P>作用是控制程序的流程,依次作了以下工作:
	 *<P>1,模擬加密解密50次,以防止p,q不是素數(witness算法的不足性).
	 *<P>2,產生RSA算法中的p,q,r,s.
	 *<P>3,保存公鑰(e和n),私鑰(d和n).
	*/
	
	//保存文件
	void saveEtofile(String eFileName)
	{
		//System.out.println(eFileName);
		try
		{
			DataOutputStream key=new DataOutputStream(
			new BufferedOutputStream(
				new FileOutputStream(eFileName)));
				
			key.writeLong(pub_e);
			key.writeLong(pub_n);
			key.close();
			System.out.println("公鑰已保存!");
		}
		catch(IOException e)
		{
			System.err.println("文件寫入錯誤,請檢查輸入格式!\n正確格式:data.dat或c:\\data.dat");
		}
	}
	
	void saveDtofile(String dFileName)
	{

		try
		{
			DataOutputStream key=new DataOutputStream(
			new BufferedOutputStream(
				new FileOutputStream(dFileName)));
				
			key.writeLong(pub_d);
			key.writeLong(pub_n);
			key.close();
			System.out.println("私鑰已保存!");
		}
		catch(IOException e)
		{
			System.err.println("文件寫入錯誤,請檢查輸入格式!\n正確格式:data.dat或c:\\data.dat");
		}
	
	}	
	makekey()
	{
		/**witness函數的測試代碼
		long test=(long)(Math.pow(2,13)-1);
		System.out.println(witness(test));
		*/

		/**elementGenerator函數的測試代碼
		long test=eleGenerator((long)(Math.random()*Math.pow(2,30)));
		System.out.println(test);
		System.out.println(witness(test));
		*/
		
		/**PQNEDGenerator函數的測試代碼
		PQNEDGenerator();
		System.out.println("p="+pub_p);
		System.out.println("q="+pub_q);
		System.out.println("n="+pub_n);
		System.out.println("e="+pub_e);
		System.out.println("d="+pub_d);
		*/
				
		/**stein函數的測試代碼
		System.out.println(stein(5,96));
		*/
		
		//模擬加密解密50次,以防止p,q不是素數(witness算法的不足性)
		boolean secure=false;
		while(!secure)
		{
			PQNEDGenerator();
			for(int i=0;i<50;i++)
			{
				long test=(long)(Math.pow(2,20)*Math.random());
				long c=powMod(test,pub_e,pub_n);
				long m=powMod(c,pub_d,pub_n);
				if(test==m)
				{
					secure=true;
				}
				else 
				{
					secure=false;
					break;
				}
			}
		}
		System.out.println("密鑰成功產生");

	}


}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区三区免费播放| 亚洲va欧美va天堂v国产综合| 制服丝袜av成人在线看| 日本大香伊一区二区三区| 91在线精品一区二区| 成人中文字幕合集| 成人免费三级在线| 一本久久a久久精品亚洲| 91浏览器在线视频| 欧美色网站导航| 欧美日韩精品高清| 日韩免费一区二区三区在线播放| 欧美一二三区在线| 国产三级一区二区三区| 国产精品毛片久久久久久| 亚洲美女屁股眼交3| 亚洲444eee在线观看| 毛片一区二区三区| 丁香婷婷综合五月| 色狠狠一区二区| 精品国产亚洲在线| 国产视频一区二区在线| 亚洲欧洲成人自拍| 日本视频一区二区| 国产成人免费网站| 91福利在线导航| 精品国产乱码久久久久久老虎| 日本一区二区久久| 亚洲国产视频一区二区| 精品一区二区三区免费| 色偷偷一区二区三区| 精品理论电影在线观看| 亚洲精品自拍动漫在线| 奇米888四色在线精品| 成人av电影免费在线播放| 欧美日韩在线不卡| 国产免费久久精品| 日本伊人精品一区二区三区观看方式| 国产在线视频一区二区三区| 色婷婷精品久久二区二区蜜臀av| 日韩视频在线一区二区| 亚洲色图欧洲色图| 国产福利一区二区三区视频在线| 色爱区综合激月婷婷| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲精品免费在线| 国产**成人网毛片九色 | 精品福利二区三区| 亚洲品质自拍视频| 国产一区二区伦理| 日韩欧美高清dvd碟片| 一区二区三区日韩精品视频| 粉嫩av一区二区三区| 日韩一本二本av| 亚洲成人激情av| 色综合久久中文综合久久97| 久久久精品影视| 九一九一国产精品| 这里只有精品视频在线观看| 亚洲一区二区欧美日韩| 99久久99久久精品免费看蜜桃| 国产农村妇女精品| 国产1区2区3区精品美女| 欧美成人伊人久久综合网| 天天综合色天天综合| 欧美视频中文字幕| 亚洲欧美视频在线观看视频| 成人爱爱电影网址| 国产精品网友自拍| 国产传媒久久文化传媒| 久久新电视剧免费观看| 久久99久久精品| 久久久久国产精品麻豆ai换脸| 久久精品国产网站| 2020国产成人综合网| 国产综合成人久久大片91| 26uuu精品一区二区| 国产在线精品免费av| 久久久综合精品| 成人午夜激情片| 国产精品国产a| 色诱亚洲精品久久久久久| 亚洲精品成人在线| 欧美日韩国产免费一区二区| 日韩精品国产欧美| 精品国产欧美一区二区| 国产久卡久卡久卡久卡视频精品| 久久精品亚洲一区二区三区浴池 | 亚洲男同1069视频| 91丨九色丨尤物| 亚洲专区一二三| 欧美精品日日鲁夜夜添| 蜜桃视频免费观看一区| 26uuu国产一区二区三区| 成人永久免费视频| 亚洲午夜久久久久中文字幕久| 欧美高清激情brazzers| 国产一区二区三区四| 中文字幕在线不卡一区二区三区| 欧美怡红院视频| 免费看欧美女人艹b| 国产清纯美女被跳蛋高潮一区二区久久w | 亚洲国产成人午夜在线一区| 97久久超碰精品国产| 午夜亚洲国产au精品一区二区| 欧美一区2区视频在线观看| 国产激情一区二区三区桃花岛亚洲| 国产精品久久久久影视| 3d成人h动漫网站入口| 国产精品77777| 午夜精品影院在线观看| 欧美韩国日本不卡| 欧美日韩一区二区在线观看视频 | 99精品欧美一区二区蜜桃免费 | 国产欧美一区二区精品久导航| 96av麻豆蜜桃一区二区| 裸体一区二区三区| 亚洲影视资源网| 国产日韩欧美制服另类| 欧美嫩在线观看| av综合在线播放| 久草中文综合在线| 亚洲一区二区三区中文字幕| 国产欧美一区二区精品性色| 欧美一区二区免费观在线| 色综合久久天天| 成人午夜av电影| 精品一区二区综合| 天堂蜜桃91精品| 一区二区三区在线免费视频| 2022国产精品视频| 日韩一区二区三区观看| 欧美色图激情小说| 91亚洲永久精品| 成人福利视频网站| 国产精品自在在线| 精品一区二区综合| 日韩国产成人精品| 日韩中文字幕区一区有砖一区| 亚洲色大成网站www久久九九| 国产女人18毛片水真多成人如厕 | 欧美日韩在线播| 日本韩国一区二区| 91丨九色porny丨蝌蚪| 成人综合婷婷国产精品久久| 国产精一区二区三区| 久久综合综合久久综合| 免费亚洲电影在线| 蜜臀va亚洲va欧美va天堂 | 国产精品欧美一区二区三区| 精品国产凹凸成av人导航| 日韩欧美国产小视频| 精品欧美黑人一区二区三区| 精品久久国产字幕高潮| 精品国产91九色蝌蚪| 久久久夜色精品亚洲| 久久久无码精品亚洲日韩按摩| 精品国产网站在线观看| 久久久噜噜噜久久中文字幕色伊伊 | 国产麻豆日韩欧美久久| 国产一区二区免费视频| 夫妻av一区二区| 99久久99久久精品国产片果冻| 99久久99久久综合| 欧美午夜精品免费| 欧美电影在哪看比较好| 日韩精品一区二区三区中文不卡| 精品国产亚洲在线| 国产精品对白交换视频| 亚洲激情在线播放| 日韩国产高清在线| 国产精品影视在线观看| 91网页版在线| 在线播放欧美女士性生活| 精品久久久久久久人人人人传媒| 久久男人中文字幕资源站| 亚洲欧洲三级电影| 日本女优在线视频一区二区| 国产传媒日韩欧美成人| 色哟哟一区二区在线观看| 欧美精品三级日韩久久| 国产欧美日韩卡一| 亚洲一级二级三级在线免费观看| 蜜桃av一区二区| 91在线视频18| 欧美电影精品一区二区| 亚洲欧洲av另类| 日本欧美一区二区| 91在线视频网址| 精品对白一区国产伦| 精品一区二区免费在线观看| 成人av中文字幕| 欧美一级艳片视频免费观看| 中文字幕成人网| 三级欧美在线一区| 99国产欧美另类久久久精品| 精品欧美乱码久久久久久1区2区| 亚洲日本中文字幕区| 国产专区欧美精品| 欧美精品黑人性xxxx|