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

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

?? mainrsa.java

?? RSA加密算法演示程序.包括公鑰與私鑰的生成算法.自定義公鑰與私鑰的長度
?? JAVA
字號:
package org.xiaolq.rsa;


import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.math.BigInteger;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;


public class MainRSA {

	private JTextArea textFieldC;
	private JTextArea textFieldM;
	private JFrame frame;
	private JLabel titleLabel;
	private JLabel pLabel;
	private JLabel qLabel;
	private JLabel nLabel;
	private JLabel eLabel;
	private JLabel dLabel;
	
	private JLabel label_p;
	private JLabel label_q;
	private JButton runButton;
	private JButton encriptButton;
	private JButton decodeButton;
	private JButton getTextCButton;
	private JOptionPane message;
	private JLabel textC_label;
	private JLabel textM_label;
	
	private BigInteger biP, biQ, biN, biD, biE, biOL;
	
	private BigInteger textM;
	private Map<Integer, BigInteger> map;
	
	RSATool tools;
	
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		try {
			MainRSA window = new MainRSA();
			window.frame.setVisible(true);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * Create the application
	 */
	public MainRSA() {
		initialize();
	}

	/**
	 * Initialize the contents of the frame
	 */
	private void initialize() {
		
		tools = new RSATool();
		map = new HashMap<Integer, BigInteger>();
		
		frame = new JFrame();
		frame.setTitle("RSA加密算法演示");
		frame.getContentPane().setLayout(null);
		frame.setBounds(350, 100, 374, 507);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		titleLabel = new JLabel();
		titleLabel.setFont(new Font("@宋體", Font.BOLD, 42));
		titleLabel.setText("RSA算法演示");
		titleLabel.setBounds(37, 10, 278, 39);
		frame.getContentPane().add(titleLabel);

		pLabel = new JLabel(); 
		pLabel.setFont(new Font("", Font.PLAIN, 16));
		pLabel.setText("p:");
		pLabel.setBounds(153, 74, 17, 15);
		frame.getContentPane().add(pLabel);

		qLabel = new JLabel();
		qLabel.setFont(new Font("", Font.PLAIN, 16));
		qLabel.setText("q:");
		qLabel.setBounds(153, 104, 16, 15);
		frame.getContentPane().add(qLabel);

		runButton = new JButton();
		runButton.setText("產生密鑰");
		runButton.setBounds(9, 183, 99, 23);
		runButton.setEnabled(false);
		frame.getContentPane().add(runButton);

		nLabel = new JLabel();
		nLabel.setText("n=pq");
		nLabel.setFont(new Font("", Font.PLAIN, 12));
		nLabel.setBounds(135, 146, 211, 30);
		frame.getContentPane().add(nLabel);

		eLabel = new JLabel();
		eLabel.setText("公鑰={e,n}");
		eLabel.setFont(new Font("宋體", Font.PLAIN, 12));
		eLabel.setBounds(135, 179, 211, 31);
		frame.getContentPane().add(eLabel);

		dLabel = new JLabel();
		dLabel.setText("私鑰={d,n}");
		dLabel.setFont(new Font("宋體", Font.PLAIN, 12));
		dLabel.setBounds(135, 216, 211, 29);
		frame.getContentPane().add(dLabel);

		final JLabel label = new JLabel();
		label.setText("加密");
		label.setBounds(9, 250, 30, 15);
		frame.getContentPane().add(label);

		final JLabel label_1 = new JLabel();
		label_1.setText("解密");
		label_1.setBounds(9, 353, 30, 15);
		frame.getContentPane().add(label_1);

		encriptButton = new JButton();
		encriptButton.setEnabled(false);
		encriptButton.setText("加密");
		encriptButton.setBounds(153, 324, 65, 23);
		frame.getContentPane().add(encriptButton);

		final JLabel label_3 = new JLabel();
		label_3.setText("密文C=");
		label_3.setBounds(34, 303, 45, 15);
		frame.getContentPane().add(label_3);

		textC_label = new JLabel();
		textC_label.setText("?");
		textC_label.setBounds(84, 303, 231, 15);
		frame.getContentPane().add(textC_label);

		decodeButton = new JButton();
		decodeButton.setEnabled(false);
		decodeButton.setText("解密");
		decodeButton.setBounds(153, 418, 65, 23);
		frame.getContentPane().add(decodeButton);

		final JLabel label_6 = new JLabel();
		label_6.setText("明文P=");
		label_6.setBounds(37, 399, 45, 15);
		frame.getContentPane().add(label_6);

		textM_label = new JLabel();
		textM_label.setText("?");
		textM_label.setBounds(84, 399, 231, 15);
		frame.getContentPane().add(textM_label);

		final JSeparator separator = new JSeparator();
		separator.setBounds(10, 251, 346, 14);
		frame.getContentPane().add(separator);

		final JSeparator separator_1 = new JSeparator();
		separator_1.setBounds(10, 353, 346, 10);
		frame.getContentPane().add(separator_1);

		final JSeparator separator_2 = new JSeparator();
		separator_2.setBounds(9, 59, 347, 20);
		frame.getContentPane().add(separator_2);

		final JMenuBar menuBar = new JMenuBar();
		frame.setJMenuBar(menuBar);

		final JMenu menu = new JMenu();
		menu.setText("幫助");
		menu.addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e) {
				//彈出幫助菜單
				String help = "1.選擇2個保密的大素數p和q;\n2.計算n=p*q和歐拉函數值o=(p-1)(q-1);\n" +
							  "3.選一整數e,且滿足1<e<o和gcd(o,e)=1;\n4.計算d,且滿足d*e=1 mod o;\n" +
							  "5.公鑰為{e,n},私鑰為{d,n}";
				message.showMessageDialog(frame, help);
				
			}
			
		});
		menuBar.add(menu);
		
		JMenu jm = new JMenu();
		jm.setToolTipText("關于");
		jm.setText("關于");
		menuBar.add(jm);
		jm.addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e) {
				String about = "本軟件最終擁有權屬于肖亮慶!";
				message.showMessageDialog(frame, about);
			}
		});

		final JButton producePrime = new JButton();
		producePrime.setText("生成素數p和q");
		producePrime.setBounds(9, 85, 115, 23);
		frame.getContentPane().add(producePrime);

		label_p = new JLabel();
		label_p.setBounds(176, 75, 158, 15);
		frame.getContentPane().add(label_p);

		label_q = new JLabel();
		label_q.setBounds(175, 105, 159, 15);
		frame.getContentPane().add(label_q);

		final JLabel label_2 = new JLabel();
		label_2.setBounds(34, 271, 44, 15);
		frame.getContentPane().add(label_2);
		label_2.setText("明文P=");

		final JLabel label_5 = new JLabel();
		label_5.setBounds(37, 371, 43, 15);
		frame.getContentPane().add(label_5);
		label_5.setText("密文C=");

		textFieldC = new JTextArea();
		textFieldC.setBounds(87, 369, 200, 20);
		frame.getContentPane().add(textFieldC);

		final JSeparator separator_3 = new JSeparator();
		separator_3.setBounds(9, 127, 347, 13);
		frame.getContentPane().add(separator_3);

		getTextCButton = new JButton();
		getTextCButton.setText("獲取");
		getTextCButton.setEnabled(false);
		getTextCButton.setBounds(293, 369, 68, 23);
		frame.getContentPane().add(getTextCButton);
		/**
		 * 響應產生p和q的事件
		 */
		producePrime.addActionListener(new ActionListener() {
			public void actionPerformed(final ActionEvent e) {
				biP = tools.producePrimeNum();
				biQ = tools.producePrimeNum();
				label_p.setText(biP.toString());
				label_q.setText(biQ.toString());
				
				runButton.setEnabled(true);
			}
		});
		
		/**
		 * 響應解密事件
		 */
		decodeButton.addActionListener(new ActionListener() {
			public void actionPerformed(final ActionEvent ex) {
				//解密
				String c = null;
				BigInteger bi = null;
				int i = 0;
				try {
					c = textFieldC.getText();
					StringTokenizer st = new StringTokenizer(c," ",false);
					while(st.hasMoreTokens()) {
						bi = new BigInteger(st.nextToken());
						map.put(i, bi);
						i++;
					}
					textM = tools.decode(map, biD, biN);
					textM_label.setText(textM.toString());
				} catch (NumberFormatException e) {
					message.showMessageDialog(frame, "請輸入密文");
				}
			}
		});
		
		/**
		 * 響應加密事件
		 */
		encriptButton.addActionListener(new ActionListener() {
			public void actionPerformed(final ActionEvent ex) {
				//加密
				String m1 = null, m2 = null;
				try {
					m1 = textFieldM.getText();
					m2 = tools.encript(m1, biE, biN);
					textC_label.setText(m2);
					getTextCButton.setEnabled(true);
				} catch (NumberFormatException e) {
					message.showMessageDialog(frame, "請輸入明文");
				}
			}
		});
		
		/**
		 * 響應該產生密鑰事件
		 */
		runButton.addActionListener(new ActionListener() {
			public void actionPerformed(final ActionEvent e) {
				count();
				encriptButton.setEnabled(true);
				decodeButton.setEnabled(true);
			}
		});
		
		/**
		 * 響應獲取密文事件
		 */
		getTextCButton.addActionListener(new ActionListener() {
			public void actionPerformed(final ActionEvent e) {
				String tempC = textC_label.getText();
				textFieldC.setText(tempC);
			}
		});

		textFieldM = new JTextArea();
		textFieldM.setBounds(84, 271, 203, 24);
		frame.getContentPane().add(textFieldM);
		textFieldM.setColumns(50);
		textFieldM.setRows(20);
	}
	/**
	 * 產生密鑰
	 *
	 */
	public void count() {
		biN = biP.multiply(biQ);
		nLabel.setText("n=pq=" + biN.toString());
		
		biE = tools.checkE(biP, biQ, this);
		eLabel.setText("公鑰為:{e,n}={" + biE + "," + biN + "}");
		
		biD = tools.checkD(biE, biOL);
		dLabel.setText("私鑰為:{d,n}={" + biD + "," + biN + "}");
	}

	public BigInteger getBiOL() {
		return biOL;
	}

	public void setBiOL(BigInteger biOL) {
		this.biOL = biOL;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧洲av在线| 成人精品小蝌蚪| 国产91高潮流白浆在线麻豆| 一本一道久久a久久精品综合蜜臀| 在线成人小视频| 专区另类欧美日韩| 极品少妇xxxx精品少妇| 欧美日韩一级二级三级| 国产精品久久久久久久久动漫| 精品在线一区二区三区| 欧美日本在线看| 亚洲免费在线看| av网站免费线看精品| 久久久www免费人成精品| 日韩主播视频在线| 欧美视频一区二区三区| 中文字幕亚洲区| 成人免费黄色在线| 久久―日本道色综合久久 | 欧美一级一区二区| 亚洲女厕所小便bbb| 成人一区二区视频| 精品伦理精品一区| 免费高清成人在线| 日韩一区二区在线播放| 午夜日韩在线观看| 欧美在线免费播放| 亚洲一二三四在线观看| 在线看国产日韩| 亚洲黄色录像片| 欧美亚男人的天堂| 一个色综合av| 欧美精品第1页| 男男成人高潮片免费网站| 91精品国产综合久久国产大片| 亚洲成人免费视| 制服丝袜亚洲色图| 日韩精品免费视频人成| 91精品国产综合久久久久久久久久| 午夜精品福利一区二区三区蜜桃| 欧美日韩午夜影院| 免费成人小视频| 久久久国产精品不卡| 国产成人av电影免费在线观看| 欧美国产1区2区| 日本精品裸体写真集在线观看| 亚洲你懂的在线视频| 欧美日韩一区不卡| 精品一区二区三区视频| 国产欧美一区二区三区沐欲| 成人丝袜18视频在线观看| 亚洲人成小说网站色在线| 欧美综合亚洲图片综合区| 午夜av区久久| 国产拍揄自揄精品视频麻豆| 91丨九色丨蝌蚪富婆spa| 亚洲成av人片观看| 久久精品人人做人人爽人人| 91麻豆国产香蕉久久精品| 舔着乳尖日韩一区| 国产视频一区二区在线| 91精彩视频在线| 国产一区二区在线观看免费| 中文字幕亚洲在| 欧美一级高清片| 99re6这里只有精品视频在线观看| 亚洲国产成人av网| 久久精品夜夜夜夜久久| 欧美日韩国产综合草草| 国产69精品久久久久毛片| 亚洲国产色一区| 久久久久亚洲蜜桃| 欧美日韩免费高清一区色橹橹| 另类小说综合欧美亚洲| 亚洲天天做日日做天天谢日日欢 | 色诱亚洲精品久久久久久| 日日夜夜一区二区| 国产精品国产馆在线真实露脸 | 久久五月婷婷丁香社区| 欧洲一区二区三区在线| 国产美女主播视频一区| 亚洲高清免费视频| 国产精品久久久久久久久快鸭 | 亚洲综合在线观看视频| 久久综合久久综合久久| 欧美日韩亚洲国产综合| 国产精品456露脸| 美女性感视频久久| 香蕉影视欧美成人| 一区二区三区欧美视频| 最新欧美精品一区二区三区| 久久久91精品国产一区二区三区| 欧美日韩国产免费一区二区| 色婷婷av一区二区| 成人一区二区三区在线观看| 国内精品免费**视频| 亚洲国产日韩在线一区模特| 日韩伦理av电影| 国产精品丝袜一区| 国产亚洲欧美一区在线观看| 久久众筹精品私拍模特| 日韩欧美激情在线| 欧美一区二区三区不卡| 精品视频一区二区不卡| 91久久精品国产91性色tv | 国产成都精品91一区二区三| 久久国产精品无码网站| 日韩成人一级片| 三级欧美在线一区| 日韩中文欧美在线| 日本午夜一本久久久综合| 日韩精品乱码av一区二区| 午夜国产精品影院在线观看| 天堂成人免费av电影一区| 亚洲 欧美综合在线网络| 亚洲成人你懂的| 日韩av电影一区| 蜜桃精品视频在线| 久久99精品久久久| 国产精品99精品久久免费| 丁香啪啪综合成人亚洲小说| 福利视频网站一区二区三区| 成人免费观看男女羞羞视频| 91免费视频观看| 欧美视频一区二区在线观看| 日韩一级黄色大片| 精品国产污网站| 亚洲国产精品二十页| 亚洲乱码国产乱码精品精小说| 一区二区三区四区不卡在线| 亚洲午夜视频在线观看| 麻豆国产欧美日韩综合精品二区 | 久久精品二区亚洲w码| 久久99精品久久久久婷婷| 国产激情精品久久久第一区二区| 国产电影精品久久禁18| 99麻豆久久久国产精品免费优播| 色噜噜狠狠一区二区三区果冻| 欧美日韩第一区日日骚| 久久精品视频网| 一区二区三区91| 狠狠网亚洲精品| 99国产欧美久久久精品| 欧美福利一区二区| 久久久精品天堂| 亚洲永久精品国产| 国产麻豆成人传媒免费观看| 97精品久久久久中文字幕| 欧美日韩国产一级片| 久久久久国产精品免费免费搜索| 一区二区三区影院| 国内精品久久久久影院薰衣草| 97精品国产露脸对白| 精品日本一线二线三线不卡| 亚洲精品高清在线| 久久9热精品视频| 色综合色综合色综合色综合色综合| 欧美精品日韩精品| 国产精品乱码妇女bbbb| 琪琪久久久久日韩精品| 91浏览器打开| 2024国产精品| 日韩中文字幕区一区有砖一区 | 玖玖九九国产精品| 91国偷自产一区二区使用方法| 精品成人一区二区| 亚洲国产视频网站| av男人天堂一区| 久久免费偷拍视频| 日韩成人免费电影| 欧美网站大全在线观看| 国产欧美久久久精品影院| 免费在线观看一区| 欧美日韩在线播放三区| 亚洲色欲色欲www在线观看| 国产呦萝稀缺另类资源| 日韩一区二区不卡| 亚洲一区视频在线观看视频| 99久久99久久精品免费观看| 久久伊人蜜桃av一区二区| 日韩黄色在线观看| 欧美日韩色综合| 亚洲精品欧美激情| av中文字幕在线不卡| 国产欧美日韩视频在线观看| 久久国产生活片100| 3751色影院一区二区三区| 亚洲自拍欧美精品| 在线观看欧美精品| 亚洲一二三四久久| 欧美亚洲高清一区二区三区不卡| 亚洲天堂免费看| 97精品久久久午夜一区二区三区 | 亚洲国产成人在线| 国产高清在线观看免费不卡| 久久综合久久鬼色中文字| 激情欧美日韩一区二区| 欧美变态tickling挠脚心| 美女网站色91| 久久久噜噜噜久噜久久综合|