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

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

?? makekey.java

?? 應用編碼與計算機密碼學>程序 如果好的話請發言
?? JAVA
字號:
/**for Stream tools*/
import java.io.*;	

/** 信息系統安全技術作業
 *<P> 這個類用于產生公鑰和私鑰并存于用戶指定的文件.本算法的流程由構造函數控制所以所有mothod的pre都是none.
 * @author 軟件學院 吳丹 00234015
 * @version 1.0
*/
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).
	*/
	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("密鑰成功產生");
		
		//以下是保存公鑰私鑰的io操作
		String filename=" ";
		try{
			BufferedReader in1=new BufferedReader(
				new InputStreamReader(System.in));

			System.out.println("請輸入公鑰存放的文件名:");
			filename=in1.readLine();
			DataOutputStream key=new DataOutputStream(
				new BufferedOutputStream(
					new FileOutputStream(filename)));
			key.writeLong(pub_e);
			key.writeLong(pub_n);
			key.close();
			System.out.println("公鑰已保存!");

			System.out.println("請輸入私鑰存放的文件名:");
			filename=in1.readLine();
			key=new DataOutputStream(
				new BufferedOutputStream(
					new FileOutputStream(filename)));
			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");
		}
	}

	public static void main(String args[])
	{
		new makeKey();
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久久久99| 国产精品久久久久影院色老大| 国产黄色成人av| 日本欧美韩国一区三区| 日韩综合一区二区| 免费久久精品视频| 捆绑调教一区二区三区| 国精产品一区一区三区mba桃花| 麻豆精品精品国产自在97香蕉| 蜜桃久久精品一区二区| 九色|91porny| 懂色av噜噜一区二区三区av| 国产精品一区二区久激情瑜伽| 国产精品综合视频| av网站一区二区三区| 91久久精品一区二区二区| 欧美男人的天堂一二区| 欧美成人高清电影在线| 中文字幕免费不卡在线| 亚洲免费在线观看视频| 日韩一区精品字幕| 国产精品亚洲成人| 在线亚洲高清视频| 日韩久久久久久| 国产精品丝袜一区| 日韩专区欧美专区| 懂色av中文字幕一区二区三区| 99久久777色| 91精品国产aⅴ一区二区| 国产校园另类小说区| 一区二区在线观看视频在线观看| 午夜a成v人精品| 国产成人超碰人人澡人人澡| 在线观看日韩毛片| 亚洲精品一线二线三线| 亚洲黄色片在线观看| 国产中文一区二区三区| 在线观看日韩电影| 久久精品男人的天堂| 亚洲高清视频的网址| 国产91丝袜在线观看| 欧美日韩你懂的| 国产精品久久久久久久久果冻传媒 | 国产精品自拍av| 91精品福利视频| 国产蜜臀av在线一区二区三区| 亚洲mv在线观看| 91色视频在线| 国产精品伦一区| 捆绑调教一区二区三区| 欧美日韩精品一区二区| 中文字幕一区二区三区蜜月| 国模少妇一区二区三区| 欧美一区二区三区免费视频| 一区二区三区蜜桃| www.亚洲免费av| 久久精品欧美日韩| 国产乱色国产精品免费视频| 91精品欧美福利在线观看| 亚洲一区二区黄色| 色婷婷av一区二区三区软件| 国产精品蜜臀av| 粉嫩一区二区三区性色av| 欧美xxxxxxxx| 国内成人自拍视频| 久久精子c满五个校花| 久草中文综合在线| 精品国产sm最大网站免费看| 奇米综合一区二区三区精品视频| 欧洲视频一区二区| 亚洲国产wwwccc36天堂| 色拍拍在线精品视频8848| 亚洲欧美日韩久久| 色综合久久九月婷婷色综合| 中文字幕一区av| 欧美综合天天夜夜久久| 午夜精品福利久久久| 91超碰这里只有精品国产| 日本欧美肥老太交大片| 欧美精品少妇一区二区三区| 首页亚洲欧美制服丝腿| 91精品欧美久久久久久动漫| 伦理电影国产精品| 国产亚洲精品aa| av不卡在线播放| 亚洲第一搞黄网站| 欧美大片免费久久精品三p | 欧美不卡123| 国产一区二区伦理片| 亚洲国产高清aⅴ视频| av影院午夜一区| 亚洲高清不卡在线观看| 日韩一级片网站| 成人精品视频一区二区三区尤物| 亚洲视频图片小说| 欧美一区永久视频免费观看| 国模冰冰炮一区二区| 《视频一区视频二区| 日本韩国欧美一区二区三区| 日日摸夜夜添夜夜添亚洲女人| 精品国产免费人成电影在线观看四季 | 成人av电影观看| 亚洲va韩国va欧美va| 久久亚区不卡日本| 91网站在线播放| 裸体一区二区三区| 亚洲欧洲日韩在线| 欧美一区二区三区日韩| 成人国产电影网| 日韩中文字幕区一区有砖一区| 国产亚洲精品aa午夜观看| 91热门视频在线观看| 蜜桃久久久久久| 一区二区中文视频| 欧美成人精品二区三区99精品| 91丨九色丨黑人外教| 狂野欧美性猛交blacked| 亚洲伦理在线免费看| 精品国产乱码久久| 在线国产电影不卡| 国产成人免费视频| 视频一区二区三区入口| 亚洲福利视频一区二区| 国产精品免费免费| 精品国产伦理网| 欧美日韩高清影院| 91污片在线观看| 成人免费看片app下载| 久久精品国产一区二区三| 亚洲与欧洲av电影| 亚洲少妇中出一区| 欧美激情综合在线| 精品久久久三级丝袜| 欧美撒尿777hd撒尿| 色综合视频在线观看| 成人一区二区三区在线观看 | 一区二区三区四区av| 亚洲国产精品成人综合色在线婷婷| 91精品国产综合久久福利软件 | 欧美一区午夜精品| 欧美日韩亚洲综合在线| 91老师国产黑色丝袜在线| 福利电影一区二区三区| 国产传媒欧美日韩成人| 国模少妇一区二区三区| 另类小说一区二区三区| 久久福利资源站| 极品少妇一区二区| 国产一区福利在线| 国产九九视频一区二区三区| 欧美日韩成人在线一区| 欧美调教femdomvk| 欧美丝袜丝交足nylons图片| 日本韩国欧美三级| 欧美日韩一区二区三区视频| 欧美日韩成人激情| 欧美一级视频精品观看| 精品国产乱码久久久久久影片| 精品福利在线导航| 国产欧美日韩综合精品一区二区| 国产亚洲欧美色| 中文字幕一区av| 一区二区三区在线观看欧美| 一区二区三区高清不卡| 午夜伦欧美伦电影理论片| 日本不卡123| 国产真实精品久久二三区| 成人丝袜高跟foot| 色综合天天性综合| 日韩午夜电影在线观看| 精品久久久久久久久久久院品网 | 欧美精品在线视频| 欧美一区二区美女| 国产亚洲污的网站| 亚洲老妇xxxxxx| 久久精品久久综合| 成人福利视频在线看| 欧美视频精品在线观看| 欧美一级日韩免费不卡| 国产日韩av一区二区| 一区二区三区久久| 美女视频一区在线观看| 欧美大胆人体bbbb| 中文字幕日韩一区| 日产国产欧美视频一区精品| 国产一区二区三区久久久 | 欧美一三区三区四区免费在线看| www日韩大片| 一个色妞综合视频在线观看| 美女视频一区在线观看| 色综合久久六月婷婷中文字幕| 91精品啪在线观看国产60岁| 国产午夜亚洲精品午夜鲁丝片| 亚洲一区在线观看免费观看电影高清| 蜜臀av性久久久久蜜臀aⅴ | 欧美精品在线一区二区三区| 欧美激情一区在线观看| 日韩av一区二区三区四区| www..com久久爱| 久久久噜噜噜久噜久久综合|