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

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

?? rsa.java

?? 未使用任何開發包的RSA算法
?? JAVA
字號:
/**
 * 本程序實現對文件進行非對稱RSA加密
 * 版權所有@計算機科學學院 何文
 * 注意:在點擊按鈕“隨機產生后”如果n的值小于65535,或者大于131072時,需要再次點擊按鈕,直到n值符合條件
 * 加密后產生的文件為源文件名相同但后綴為encrypt的文件,文件與源文件在同一個目錄下
 * 解密后產生的文件為源文件名相同但后綴為decrypt的文件,文件與源文件在同一個目錄下
 */
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.*;
import java.lang.Double;
import java.awt.Color;
import javax.swing.BorderFactory;
import java.math.*;

 
public class RSA extends JFrame
{
	public static final int WIDTH = 550; 
	public static final int HEIGHT = 200; 
	keyPanel pp;
	Container c;
	
	//主函數
	public static void main(String args[])
	{
		new RSA();
	}
	
	//構造函數
	public RSA()
	{
		this.setSize(WIDTH,HEIGHT); 
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
		this.setResizable(false); 
		Toolkit tk = Toolkit.getDefaultToolkit(); 
		Dimension screenSize = tk.getScreenSize(); 
		this.setLocation((screenSize.width - WIDTH)/2, 
		(screenSize.height - HEIGHT)/2); 
		this.setTitle("文件加密器(TriDES)"); 
		c = this.getContentPane(); 
		c.setLayout( new FlowLayout()); 

		final FilePanel fp = new FilePanel("文件選擇"); 
		c.add(fp); 
		pp = new keyPanel(); 
		c.add(pp); 
		JButton jbE = new JButton("加密"); 
		c.add(jbE); 
		
		jbE.addActionListener(new ActionListener(){    //偵聽函數
		public void actionPerformed(ActionEvent event)
		{ 
			System.out.println((int)RSAcrypt(8831,70871,-213));
			System.out.println(RSAcrypt(40271,70871,-2035));
			try{
				File f = new File(fp.getFileName());
				int length = (int)f.length();
				int[] data = new int[length/2];
				short[] OutPut = new short[length/2];
				DataInputStream in = new DataInputStream(new FileInputStream(f));
				DataOutputStream out = new DataOutputStream(new FileOutputStream(f+".encrypt"));
				for(int i=0;i<length/2;i++)
				{
					data[i]=in.readUnsignedShort();
				}
				OutPut = crypt(Integer.valueOf(pp.fileText3.getText()).intValue(),Integer.valueOf(pp.fileText4.getText()).intValue(),data);
				for(int i=0;i<length/2;i++)
				{
					out.writeShort((int)OutPut[i]);
				}
				out.flush();
				out.close();
				in.close();
				}catch(IOException IOE){}
				JOptionPane.showMessageDialog( c,"加密成功!"); 
		} 
		}); 
			JButton jbD = new JButton("解密"); 
			c.add(jbD); 
		jbD.addActionListener(new ActionListener()
		{ 
			public void actionPerformed(ActionEvent event)
			{ 
				try{
					File f = new File(fp.getFileName());
					int length = (int)f.length();
					int[] data = new int[length/2];
					short[] OutPut = new short[length/2];
					DataInputStream in = new DataInputStream(new FileInputStream(f));
					DataOutputStream out = new DataOutputStream(new FileOutputStream(f+".decrypt"));
					for(int i=0;i<length/2;i++)
					{
						data[i]=in.readUnsignedShort();
					}
					OutPut = crypt(Integer.valueOf(pp.fileText1.getText()).intValue(),Integer.valueOf(pp.fileText4.getText()).intValue(),data);
					for(int i=0;i<length/2;i++)
					{
						out.writeShort((int)OutPut[i]);
					}
					out.flush();
					out.close();
					in.close();
					}catch(IOException IOE){}
					JOptionPane.showMessageDialog( c,"解密成功!"); 
			} 
		}); 
		 this.setVisible(true);
	}

	
/**
 * 對單個數字進行加密的函數
 * @param d
 * @param n
 * @param c
 * 返回加密后的數據
 */
	int RSAcrypt(int d,int n, int c)
	{
		int i;
		for(i=1;i<=d;i++)
		{
			if(Math.pow(c, i)>n)break;
		}
		int k = d/i;
		int x = d%i;
		double y  = (Math.pow(c, x))%n;
		Double z;
		while(k>0)
		{
			y = ((Math.pow(c, i))%n*y)%n;
			k--;
		}
		Double qq = new Double(y);
		return (short)qq.intValue();
	}
	
	/**
	 * 加密函數,或者解密函數
	 * 當輸入私鑰時進行加密,當輸入公鑰時進行解密
	 * 參數d,n分別為私鑰的d,n或者公鑰的e,n
	 * 加密或者解密的數據為data數組
	 */
	short[] crypt(int d,int n,int[] data)
	{
		int in;
		short ctr[] = new short[data.length];
		for(int i=0;i<data.length;i++)
		{
			ctr[i] = (short)RSAcrypt(d,n,data[i]);
		}
		return ctr;
	}
	
	
}

/**
 * 文件選擇面板類,繼承自JPanel 
 */
class FilePanel extends JPanel{ 
	FilePanel(String str){ 
	JLabel label = new JLabel(str); 
	JTextField fileText = new JTextField(35); 
	JButton chooseButton = new JButton("瀏覽..."); 
	this.add(label); 
	this.add(fileText); 
	this.add(chooseButton); 
	clickAction ca = new clickAction(this); 
	chooseButton.addActionListener(ca); 

	} 

	public String getFileName(){ 
	JTextField jtf = (JTextField)this.getComponent(1); 
	return jtf.getText(); 
	} 

	private class clickAction implements ActionListener{ 
	clickAction(Component c){ 
	cmpt = c; 
	} 

	public void actionPerformed(ActionEvent event){ 
	JFileChooser chooser = new JFileChooser(); 
	chooser.setCurrentDirectory(new File(".")); 
	int ret = chooser.showOpenDialog(cmpt); 
	if(ret==JFileChooser.APPROVE_OPTION){ 
	JPanel jp = (JPanel)cmpt; 
	JTextField jtf = (JTextField)jp.getComponent(1); 
	jtf.setText(chooser.getSelectedFile().getPath()); 
	} 
	} 

	private Component cmpt; 
	} 
	}


/**
 * 密鑰獲可視化類,繼承自JPanel
 * 它顯示由類key產生的隨機公鑰和私鑰
 */
class keyPanel extends JPanel
{ 
	JTextField fileText1,fileText2,fileText3,fileText4;
	keyPanel(){ 
	JLabel label = new JLabel("公鑰");
	label.setBorder(BorderFactory.createLineBorder(Color.blue));
	JLabel labe2 = new JLabel("e");
	JLabel labe3 = new JLabel("n");
	JLabel labe4 = new JLabel("私鑰");
	labe4.setBorder(BorderFactory.createLineBorder(Color.blue));
	JLabel labe5 = new JLabel("d");
	JLabel labe6 = new JLabel("n"); 
	JButton b1 = new JButton("隨機產生");
	fileText1 = new JTextField(7);
	fileText2 = new JTextField(7);
	fileText3 = new JTextField(7);
	fileText4 = new JTextField(7);
	this.add(label); 
	this.add(labe2); 
	this.add(fileText1);
	this.add(labe3); 
	this.add(fileText2);
	this.add(labe4); 
	this.add(labe5);
	this.add(fileText3);
	this.add(labe6); 
	this.add(fileText4);
	this.add(b1);
	b1.addActionListener(new ActionListener(){    //偵聽函數
		public void actionPerformed(ActionEvent event)
		{ 
			key k = new key();
			fileText1.setText(String.valueOf(k.e));
			fileText2.setText(String.valueOf(k.n));
			fileText3.setText(String.valueOf(k.d));
			fileText4.setText(String.valueOf(k.n));
		} 
		}); 
	}
}



/**
 * 產生密鑰對的類
 * p()產生一個隨機素數
 * p,q分別為隨機素數
 * n=p*q
 * e為小于(p-1)*(q-1)且與(p-1)*(q-1)互為素數的一個數
 * d為e關于(p-1)*(q-1)的乘法逆元
 * 公鑰為e,n;私鑰為d,n
 */
class key
{
	static int p;
	static int q;
	static int n;
	static int e;
	static int d;
	
	protected int howb(int M, int N) //求最大公約數
    {
        if(N<0||M<0)
        {
            return -1;
        }
        if(N==0)
        {
            return M;
        }
        return howb(N,M%N);
    }
	public static boolean isSushu(int x){//定義一個判斷一個數是否是素數的函數
        if(x<2) return false;
        if( x==2)return true;
        for(int i=2;i<= Math.sqrt(x);i++)
            if(x%i==0) return false;
        return true;
    }
	protected int p()//產生隨機素數
	{
		int p = new Random().nextInt(1024); //產生一個隨機數
		while(!isSushu(p))p = new Random().nextInt(1024);
		return p;
	}
	key()
	{
		p =  p(); //產生大于3的素數1
		q =  p(); //產生大于3的素數2
		n = p*q;
		//while(n>131072 || n<=65536)n = p*q;
		e = (new Random().nextInt((p-1)*(q-1)))/3;//隨機產生一個e值
		while(e<(p-1)*(q-1))
		{
			e++; //求e的值
			if(howb(e,(p-1)*(q-1))==1)break; //假如e與(p-1)*(q-1)互為素數,則結束循環
		}
		ExtendedEuclid ExtendedEuclid= new ExtendedEuclid();
		d = ExtendedEuclid.Extended((p-1)*(q-1),e);
	}
}


/*擴展歐幾里德類
 * 即a1關于a的乘法逆元
 */
class ExtendedEuclid 
{
	int x1 = 1;
	int x2 = 0;
	int y1 = 0;
	int y2 = 1;
	int t1,t2,t3;
	int q;
	ExtendedEuclid(){}//構造函數為空
	public int Extended(int a,int a1)//求a1關于a的乘法逆元
	{
		int yy = a;
		while(a1 != 1)
		{
			q = a / a1 ;
			t1 = x1;
			t2 = x2;
			t3 = a;
			x1 = y1 ;
			x2 = y2 ;
			a = a1  ;
			y1 = t1 - q*x1;
			y2 = t2 - q*x2;
			a1 = t3 - q*a;
			if(a1 == 0) return -1;
		}
		if(y2%yy>=0)return y2%yy;
		else return yy+y2%yy;		
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人亚洲精品青草天美| 亚洲成人免费电影| 日韩黄色免费电影| 99久久婷婷国产综合精品| 日韩一二三区视频| 亚洲免费大片在线观看| 国产美女一区二区| 欧美日韩的一区二区| 国产精品久久久久久久久久免费看| 青娱乐精品视频在线| 色一区在线观看| 国产亚洲综合av| 日本vs亚洲vs韩国一区三区二区 | 久久伊99综合婷婷久久伊| 亚洲午夜羞羞片| av一二三不卡影片| 欧美精品一区二区蜜臀亚洲| 一区二区成人在线视频 | 亚洲激情一二三区| 国产精品一区二区三区99| 欧美一区二区三区播放老司机| 亚洲一区二区三区四区五区黄| 成人性色生活片| 2017欧美狠狠色| 捆绑变态av一区二区三区| 欧美片在线播放| 亚洲国产日日夜夜| 色综合天天综合网国产成人综合天| 久久久无码精品亚洲日韩按摩| 日韩av在线播放中文字幕| 色哟哟一区二区在线观看 | 欧美又粗又大又爽| 中文字幕一区二区三区在线观看| 国产一区二区按摩在线观看| 日韩一区二区免费视频| 日韩综合在线视频| 欧美日本免费一区二区三区| 亚洲综合免费观看高清完整版在线| 99久久精品国产一区| 国产精品嫩草影院com| 粉嫩av一区二区三区在线播放 | 成人免费精品视频| 欧美韩国日本综合| 国产激情偷乱视频一区二区三区| 精品久久人人做人人爽| 麻豆精品视频在线观看视频| 日韩三级中文字幕| 久99久精品视频免费观看| 日韩一区二区在线看| 裸体一区二区三区| 欧美成人精品1314www| 另类小说综合欧美亚洲| 精品粉嫩超白一线天av| 国产一区二区调教| 欧美国产精品劲爆| 99久久免费精品| 亚洲精品乱码久久久久久久久 | 污片在线观看一区二区| 欧美日韩激情一区二区| 日本91福利区| 欧美成人猛片aaaaaaa| 国产精品中文字幕日韩精品| 国产免费成人在线视频| youjizz久久| 亚洲精品久久久蜜桃| 欧美日韩中文精品| 免费视频最近日韩| 久久一二三国产| 成人高清免费观看| 亚洲精品久久嫩草网站秘色| 欧美日韩成人激情| 久久国产婷婷国产香蕉| 日本一区二区三区高清不卡| 91原创在线视频| 性做久久久久久久久| 精品理论电影在线| caoporen国产精品视频| 亚洲伊人色欲综合网| 91精品国产欧美一区二区18| 国产精品夜夜嗨| 亚洲日本在线看| 制服丝袜在线91| 国产一区二区女| 亚洲欧美韩国综合色| 这里只有精品视频在线观看| 国产精品一区二区在线观看不卡| 中文字幕在线观看不卡| 欧美日本免费一区二区三区| 国产在线观看免费一区| 亚洲人亚洲人成电影网站色| 7777精品伊人久久久大香线蕉的 | 最新国产精品久久精品| 欧美另类久久久品| 国产精品一区久久久久| 亚洲综合偷拍欧美一区色| 精品美女在线观看| 色综合天天做天天爱| 免费欧美在线视频| 国产精品久99| 欧美一区二区三区啪啪| 成人av午夜电影| 日本在线观看不卡视频| 国产精品乱人伦中文| 正在播放亚洲一区| 国产成人午夜电影网| 亚洲成人动漫在线观看| 欧美精品一区二区精品网| 在线看不卡av| 一区二区三区高清| 丁香网亚洲国际| 久久九九影视网| 欧美三级午夜理伦三级中视频| 激情都市一区二区| 亚洲国产欧美在线| 国产日韩高清在线| 欧美一区二区三区思思人| www.99精品| 黑人巨大精品欧美一区| 艳妇臀荡乳欲伦亚洲一区| 久久美女艺术照精彩视频福利播放 | 欧美色电影在线| 国产麻豆成人传媒免费观看| 亚洲大片一区二区三区| 亚洲国产精品传媒在线观看| 这里是久久伊人| 91福利在线免费观看| 丰满少妇久久久久久久| 老司机精品视频在线| 亚洲成人自拍一区| 亚洲色图在线视频| 欧美激情一区二区三区蜜桃视频| 日韩一区二区视频在线观看| 在线观看国产一区二区| 成人高清伦理免费影院在线观看| 老司机精品视频在线| 三级久久三级久久久| 亚洲精品国产a| 国产精品国产三级国产a| 2017欧美狠狠色| 日韩免费一区二区| 7777精品伊人久久久大香线蕉 | 久久成人免费日本黄色| 亚洲成av人**亚洲成av**| 中文字幕中文字幕一区| 久久精品人人做人人爽人人| 精品日韩在线一区| 欧美一区二区私人影院日本| 欧美日韩国产天堂| 欧洲av一区二区嗯嗯嗯啊| 成人av影视在线观看| 丁香婷婷综合激情五月色| 国产九色sp调教91| 狠狠狠色丁香婷婷综合激情| 免费观看30秒视频久久| 丝袜美腿高跟呻吟高潮一区| 亚洲午夜av在线| 亚洲无人区一区| 亚洲在线成人精品| 亚洲综合视频在线| 亚洲精品国久久99热| 亚洲乱码国产乱码精品精98午夜 | 欧美人妖巨大在线| 欧美剧在线免费观看网站| 欧美日韩一区在线观看| 精品视频在线免费观看| 欧美三电影在线| 欧美日韩一区二区在线观看视频| 欧美性色黄大片手机版| 欧美系列日韩一区| 91精品在线一区二区| 日韩写真欧美这视频| 日韩美女天天操| 久久伊人中文字幕| 国产精品女上位| 综合电影一区二区三区 | 日韩欧美中文字幕公布| 欧美成人一区二区| 国产偷国产偷亚洲高清人白洁 | 91国偷自产一区二区开放时间| 日本国产一区二区| 欧美日韩精品一区二区三区蜜桃| 欧美电影在线免费观看| 欧美成人艳星乳罩| 欧美国产日韩一二三区| 亚洲欧美日韩中文播放| 亚洲一区免费观看| 蜜臀91精品一区二区三区| 韩国女主播成人在线| www.在线欧美| 欧美色精品在线视频| 欧美电视剧免费全集观看| 国产亚洲自拍一区| 亚洲精品亚洲人成人网在线播放| 亚洲午夜久久久久久久久电影网| 日韩电影在线免费观看| 国产一二三精品| 色综合天天综合| 欧美精品高清视频| 久久久99久久| 一区二区在线观看av|