⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sendnode.java

📁 采用RSA公秘钥体制和MD5签名算法的安全通信
💻 JAVA
字号:
/*
 * 连接:2000
 * 发送DesKey:2001
 * 发RsaPublicKey:2002
 * 收RsaPublicKey:2004
 * 发送消息:2003
 */
import javax.swing.SwingUtilities;
//import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JTextField;
import java.awt.Rectangle;
import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.Dimension;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;

import javax.swing.BorderFactory;
import javax.swing.JEditorPane;
import javax.swing.JTextArea;
import javax.swing.JSplitPane;
import javax.swing.BoxLayout;
import javax.swing.UIManager;

import java.awt.Insets;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.net.*;
import java.security.PublicKey;
import java.awt.event.KeyEvent;
import java.io.*;
import javax.swing.JSlider;
import javax.swing.JScrollPane;
public class SendNode extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JTextField jTextField = null;
	private JLabel jLabel = null;
	private JButton jButton = null;
	private JPanel jPanel = null;
	private JTextArea jTextArea = null;
	private JPanel jPanel1 = null;
	private JPanel jPanel2 = null;
	private JTextArea jTextArea1 = null;
	private JButton jButton2 = null;
	private JPanel jPanel3 = null;
	private JButton jButton3 = null;
	private JTextArea jTextArea2 = null;
	private JTextArea jTextArea3 = null;
	private JTextArea jTextArea4 = null;
	private JButton jButton1 = null;
	private JButton jButton4 = null;
	private JTextArea jTextArea5 = null;
	
	private JScrollPane jScrollPane = null;
	private JScrollPane jScrollPane1 = null;
	private JScrollPane jScrollPane11 = null;
	private JScrollPane jScrollPane12 = null;
	private JScrollPane jScrollPane13 = null;
	private JScrollPane jScrollPane14 = null;
	
	
	private PublicKey publicKey = null;
	private DES des = null;
	private RSA rsa = new RSA();  //  @jve:decl-index=0:
	
	/**
	 * This method initializes jTextField	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getJTextField() {
		if (jTextField == null) {
			jTextField = new JTextField();
			jTextField.setText("127.0.0.1");
			jTextField.setBounds(new Rectangle(87, 9, 80, 22));
		}
		return jTextField;
	}

	/**
	 * This method initializes jButton	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton() {
		if (jButton == null) {
			jButton = new JButton();
			jButton.setText("Send Message");
			jButton.setBounds(new Rectangle(161, 74, 123, 26));
			jButton.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
					try{
						Socket s = new Socket(jTextField.getText(),2003);
						ObjectOutputStream objOut = new ObjectOutputStream(s.getOutputStream());
						String strSend =  jTextArea2.getText();
						MD5withRSA.setPrivateKey(rsa.getprivateKey());
						byte [] sign = MD5withRSA.sign(strSend.getBytes());
						byte [] messageSend = des.encrpty( strSend.getBytes());
						objOut.writeInt(messageSend.length);
						objOut.write(messageSend);
						byte [] signSend = des.encrpty(sign);
						int signLength = signSend.length;
						objOut.writeInt(signLength);
						objOut.write(signSend);
						objOut.flush();
						objOut.close();
						s.close();
						 
						jTextArea.append(  InetAddress.getLocalHost().getHostName()+":\n"
								+"message:" +messageSend .toString()+"\n"+ "sign:"+signSend.toString()+ "\n");
						jTextArea2.setText("");
					
						
					}catch(Exception ex){ex.printStackTrace();}
				}
			});
		}
		return jButton;
	}

	/**
	 * This method initializes jPanel	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel() {
		if (jPanel == null) {
			jPanel = new JPanel();
			jPanel.setLayout(null);
			jPanel.setBounds(new Rectangle(2, 1, 317, 40));
			jPanel.add(jLabel, null);
			jPanel.add(getJTextField(), null);
			jPanel.add(getJButton3(), null);
		}
		return jPanel;
	}

	/**
	 * This method initializes jTextArea	
	 * 	
	 * @return javax.swing.JTextArea	
	 */
	private JTextArea getJTextArea() {
		if (jTextArea == null) {
			jTextArea = new JTextArea();
			jTextArea.setName("jTextArea");
			jTextArea.setLineWrap(true);
			jTextArea.setBorder(BorderFactory.createTitledBorder("Cryptograph:"));
		}
		return jTextArea;
	}

	/**
	 * This method initializes jPanel1	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel1() {
		if (jPanel1 == null) {
			jPanel1 = new JPanel();
			jPanel1.setLayout(null);
			jPanel1.setBounds(new Rectangle(4, 314, 314, 191));
			jPanel1.add(getJPanel3(), null);
			jPanel1.add(getJScrollPane13(), null);
		}
		return jPanel1;
	}

	/**
	 * This method initializes jPanel2	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel2() {
		if (jPanel2 == null) {
			jPanel2 = new JPanel();
			jPanel2.setLayout(null);
			jPanel2.setBounds(new Rectangle(2, 42, 315, 267));
			jPanel2.add(getJButton1(), null);
			jPanel2.add(getJButton4(), null);
			jPanel2.add(getJScrollPane(), null);
			jPanel2.add(getJScrollPane1(), null);
			jPanel2.add(getJScrollPane11(), null);
			jPanel2.add(getJScrollPane12(), null);
		}
		return jPanel2;
	}

	/**
	 * This method initializes jTextArea1	
	 * 	
	 * @return javax.swing.JTextArea	
	 */
	private JTextArea getJTextArea1() {
		if (jTextArea1 == null) {
			jTextArea1 = new JTextArea();
			jTextArea1.setText("");
			jTextArea1.setLineWrap(true);
			jTextArea1.setBorder(BorderFactory.createTitledBorder("Terminal Public Key:"));
		}
		return jTextArea1;
	}

	/**
	 * This method initializes jButton2	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton2() {
		if (jButton2 == null) {
			jButton2 = new JButton();
			jButton2.setText("Send Public Key");
			jButton2.setBounds(new Rectangle(14, 74, 139, 26));
			jButton2.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
					try{
						Socket s = new Socket(InetAddress.getByName(jTextField.getText()),2002);
						ObjectOutputStream objOut = new ObjectOutputStream(s.getOutputStream());
						objOut.writeObject(rsa.getPublicKey());
						objOut.flush();
					}catch(Exception ex){
						ex.printStackTrace();
					}
					
					
				}
			});
		}
		return jButton2;
	}

	/**
	 * This method initializes jPanel3	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel3() {
		if (jPanel3 == null) {
			jPanel3 = new JPanel();
			jPanel3.setLayout(null);
			jPanel3.setName("jPanel3");
			jPanel3.setBounds(new Rectangle(1, 80, 311, 105));
			jPanel3.add(getJButton2(), null);
			jPanel3.add(getJButton(), null);
			jPanel3.add(getJScrollPane14(), null);
		}
		return jPanel3;
	}

	/**
	 * This method initializes jButton3	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton3() {
		if (jButton3 == null) {
			jButton3 = new JButton();
			jButton3.setText("Connect");
			jButton3.setBounds(new Rectangle(172, 7, 130, 26));
			jButton3.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
					try{
						Socket s = new Socket(InetAddress.getByName(jTextField.getText()),2000);
						if(s.isConnected()){
							jTextArea4.append("Connect Success!");
						}
					}catch(Exception ex){
						ex.printStackTrace();
					}
				}
			});
		}
		return jButton3;
	}

	/**
	 * This method initializes jTextArea2	
	 * 	
	 * @return javax.swing.JTextArea	
	 */
	private JTextArea getJTextArea2() {
		if (jTextArea2 == null) {
			jTextArea2 = new JTextArea();
			jTextArea2.setText("Come on send me!");
			jTextArea2.setAutoscrolls(true);
			jTextArea2.setLineWrap(true);
			jTextArea2.setBorder(BorderFactory.createTitledBorder("Message:"));
		}
		return jTextArea2;
	}

	/**
	 * This method initializes jTextArea3	
	 * 	
	 * @return javax.swing.JTextArea	
	 */
	private JTextArea getJTextArea3() {
		if (jTextArea3 == null) {
			jTextArea3 = new JTextArea();
			jTextArea3.setLineWrap(true);
			jTextArea3.setBorder(BorderFactory.createTitledBorder("DES Key:"));
		}
		return jTextArea3;
	}
	/**
	 * This method initializes jTextArea4	
	 * 	
	 * @return javax.swing.JTextArea	
	 */
	private JTextArea getJTextArea4() {
		if (jTextArea4 == null) {
			jTextArea4 = new JTextArea();
			jTextArea4.setLineWrap(true);
			jTextArea4.setBorder(BorderFactory.createTitledBorder("Server Statue:"));
		}
		return jTextArea4;
	}
	/**
	 * This method initializes jButton1	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton1() {
		if (jButton1 == null) {
			jButton1 = new JButton();
			jButton1.setBounds(new Rectangle(90, 236, 135, 28));
			jButton1.setText("Encrypt");
			jButton1.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
					RSA rsa = new RSA();
					rsa.setPublicKey(publicKey);
					byte [] desAfterRSA = rsa.wrapkey(des.getSecretKey());
					try{
						Socket s = new Socket(InetAddress.getByName(jTextField.getText()),2001);
						ObjectOutputStream objOut = new ObjectOutputStream(s.getOutputStream());
						objOut.write(desAfterRSA);
						objOut.flush();
					}catch(Exception ex){ex.printStackTrace();}
					jTextArea5.setText("");
					jTextArea5.append(new String(desAfterRSA));
				}
				});
		}
		return jButton1;
	}
	/**
	 * This method initializes jButton4	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton4() {
		if (jButton4 == null) {
			jButton4 = new JButton();
			jButton4.setBounds(new Rectangle(90, 150, 135, 28));
			jButton4.setText("DES Key Creation");
			jButton4.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
					des = new DES();
					jTextArea3.setText("");
					jTextArea3.append(des.getSecretKey().toString());
				}
			});
		}
		return jButton4;
	}
	/**
	 * This method initializes jTextArea5	
	 * 	
	 * @return javax.swing.JTextArea	
	 */
	private JTextArea getJTextArea5() {
		if (jTextArea5 == null) {
			jTextArea5 = new JTextArea();
			jTextArea5.setLineWrap(true);
			jTextArea5.setBorder(BorderFactory.createTitledBorder("Encrypted Key"));
		}
		return jTextArea5;
	}
	/**
	 * This method initializes jScrollPane	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPane() {
		if (jScrollPane == null) {
			jScrollPane = new JScrollPane();
			jScrollPane.setBounds(new Rectangle(1, 1, 310, 48));
			jScrollPane.setViewportView(getJTextArea4());
		}
		return jScrollPane;
	}
	/**
	 * This method initializes jScrollPane1	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPane1() {
		if (jScrollPane1 == null) {
			jScrollPane1 = new JScrollPane();
			jScrollPane1.setBounds(new Rectangle(1, 50, 310, 48));
			jScrollPane1.setViewportView(getJTextArea1());
		}
		return jScrollPane1;
	}
	/**
	 * This method initializes jScrollPane11	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPane11() {
		if (jScrollPane11 == null) {
			jScrollPane11 = new JScrollPane();
			jScrollPane11.setBounds(new Rectangle(1, 100, 310, 48));
			jScrollPane11.setViewportView(getJTextArea3());
		}
		return jScrollPane11;
	}
	/**
	 * This method initializes jScrollPane12	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPane12() {
		if (jScrollPane12 == null) {
			jScrollPane12 = new JScrollPane();
			jScrollPane12.setBounds(new Rectangle(1, 182, 310, 51));
			jScrollPane12.setViewportView(getJTextArea5());
		}
		return jScrollPane12;
	}
	/**
	 * This method initializes jScrollPane13	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPane13() {
		if (jScrollPane13 == null) {
			jScrollPane13 = new JScrollPane();
			jScrollPane13.setBounds(new Rectangle(1, 1, 310, 79));
			jScrollPane13.setViewportView(getJTextArea());
		}
		return jScrollPane13;
	}
	/**
	 * This method initializes jScrollPane14	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPane14() {
		if (jScrollPane14 == null) {
			jScrollPane14 = new JScrollPane();
			jScrollPane14.setBounds(new Rectangle(1, 1, 310, 67));
			jScrollPane14.setViewportView(getJTextArea2());
		}
		return jScrollPane14;
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				SendNode thisClass = new SendNode();
				thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				thisClass.setVisible(true);
			}
		});
	}

	/**
	 * This is the default constructor
	 */
	public SendNode() {
		super();
		new Thread (new Runnable(){
			public void run(){
				ServerSocket ss=null;
				try{
					ss = new ServerSocket(2004);
				}catch(Exception e){
					e.printStackTrace();
				}
				while(1==1){
				try{
					Socket s = ss.accept();
					ObjectInputStream objInput = new ObjectInputStream(s.getInputStream());
					publicKey = (PublicKey)objInput.readObject(); 
					 jTextArea1.setText("");
					jTextArea1.append(publicKey.toString());
				 
				}catch(Exception e){
					e.printStackTrace();
				}
				}
			}
		}).start();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(331, 541);
		this.setContentPane(getJContentPane());
		try
	    {
		 UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
	    }
	    catch(Exception e)
	    {
	    	e.printStackTrace();
	    }
		this.setTitle("Sender");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jLabel = new JLabel();
			jLabel.setText("IP Address:");
			jLabel.setBounds(new Rectangle(3, 10, 79, 18));
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(getJPanel(), null);
			jContentPane.add(getJPanel1(), null);
			jContentPane.add(getJPanel2(), null);
		}
		return jContentPane;
	}

}  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -