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

📄 face.java

📁 用于个人账户信息保护的。基于DES规则的密码保护!
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/* *************************************************/
/* Student ID: a1110530 *******************************/
/* Student Name: Yi Cheng *******************************/
/* Description: This is a simple password manager software. **/
/* ***********The encryption algorithm is DES. ***********/
/* **************************************************/

import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.TextField;
import java.util.*;
import java.io.*;
import java.io.BufferedWriter;
import java.awt.BorderLayout;
import java.text.DecimalFormat;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.Cipher;
import java.security.*;
import java.lang.reflect.Constructor;
import java.security.spec.KeySpec;
import java.security.SecureRandom;
import javax.crypto.KeyGenerator;

public class Face
{
	private JFrame frame = new JFrame("My Password Manager");
	
	private JMenu fileMenu = new JMenu( "File" );
	private JMenu toolMenu = new JMenu( "Tools" );
	private JMenu helpMenu = new JMenu( "Help" );

	private PanelBuilder pb;
	
	private JScrollPane scroll = new JScrollPane();
    JList  list = new JList(); 
    
	//-------information------//
	String[][]   columnData = new String[50][3];
	public static Vector inforList = new Vector();
	int length;
	public static String pw = "none";
	String newp = "none";
	String inforData = "";
	int index;
	
	
	//-------file-----------------//
	File file = null;
	File keyfile = null;
	byte[] enbytes;
	byte[] debytes;
	String filename = "security.mpm";
	String keyfilename = "key.mpm";
	String algorithm = "DES";

	//-------security----------//
	public static int securityFlag = 0;
	
	public Face() 
	{
		frame.setSize(650,400);

		file = new File( filename );
		keyfile = new File( keyfilename );

		if ( file.exists() )
		{
			String line = "";
			try
			{
				enbytes = readFile( filename );
				debytes = getunEncryptData( enbytes );
//				System.out.println("enbytes.length: " + enbytes.length);
//				System.out.println("debytes.length: " + debytes.length);
				index = 0;
				int number = 0;
				for ( int i=0; i<debytes.length; i++)
				{
					if ( ((char)debytes[i]) == '\r' )
					{
						if ( ((char)debytes[i+1]) == '\n'  )
						{
							number++;
							if ( number == 1 )
							{
								length = Integer.parseInt( line );
//								System.out.println("length: " + length);
								line = "";
							}
							else if ( number == 2 )
							{
								securityFlag = Integer.parseInt( line );
//								System.out.println("securityFlag: " + securityFlag);
								line = "";
							}
							else if ( number == 3 )
							{
								pw = line;
//								System.out.println("pw: " + pw);
								line = "";
								index = i+2;
								number = 0;
								break;
							}
						}
					}
					else
					{
						if ( ((char)debytes[i]) != '\n' )
						{
							line += Character.toString( (char)debytes[i] );
//							System.out.println("line: " + line);
						}
						
					}
					
				}

				int templen = 0;
				String u = "";
				String p = "";
				String r = "";

				for ( int i=index; i<(debytes.length-1); i++)
				{
					if ( ((char)debytes[i]) == '\r' )
					{
						if ( ((char)debytes[i+1]) == '\n' )
						{
							columnData[templen][number] = line;
							number++;
							if ( number == 1 )
							{
								u = line;
								line = "";
							}
							else if ( number == 2 )
							{
								p = line;
								line = "";
							}
							else if ( number == 3 )
							{
								r = line;
								line = "";
								templen++;
								number = 0;
								inforList.add( new Information( u, p, r ) );
							}
						}
					}
					else
					{
						if ( ((char)debytes[i]) != '\n' )
						{
							line += Character.toString( (char)debytes[i] );
//							System.out.println("line: " + line);
						}
						
					}
				}
			}
			catch (Exception e)
			{
				System.out.println(e);
			}

			if ( securityFlag == 1 )
			{
				final JDialog inputPassword = new JDialog(frame, "Please Input Password");
				inputPassword.setSize(400,100);
				inputPassword.getContentPane().setLayout(new BorderLayout());
					
				JPanel tmpPanel = new JPanel();
				JLabel tmpLabel = new JLabel("Password: ");
				final TextField tmpText = new TextField(30);
				tmpText.setEchoChar('*');
				tmpPanel.add(tmpLabel);
				tmpPanel.add(tmpText);
					
				inputPassword.getContentPane().add(tmpPanel, BorderLayout.CENTER);				
				JButton tmpButton = new JButton("OK");
				JLabel lb = new JLabel();
				JPanel pl = new JPanel();
				pl.add(lb);
				pl.add(tmpButton);
				pl.add(lb);
				inputPassword.getContentPane().add(pl, BorderLayout.SOUTH);
				inputPassword.show();
					
				tmpButton.addActionListener(new ActionListener() 
				{
						public void actionPerformed(ActionEvent e1)
						{
							newp = tmpText.getText();
							inputPassword.setVisible(false);
							inputPassword.dispose();

							if ( !pw.equals(newp))
							{
								final JDialog tryAgain = new JDialog(frame, "Please Try Again");
								tryAgain.setSize(400,100);
								tryAgain.getContentPane().setLayout(new BorderLayout());
										
								JPanel tmpPanel2 = new JPanel();
								JLabel tmpLabel2 = new JLabel("Password: ");
								final TextField tmpText2 = new TextField(30);
								tmpText2.setEchoChar('*');
								tmpPanel2.add(tmpLabel2);
								tmpPanel2.add(tmpText2);
										
								tryAgain.getContentPane().add(tmpPanel2, BorderLayout.CENTER);				
								JButton tmpButton2 = new JButton("OK");
								JLabel lb2 = new JLabel();
								JPanel pl2 = new JPanel();
								pl2.add(lb2);
								pl2.add(tmpButton2);
								pl2.add(lb2);
								tryAgain.getContentPane().add(pl2, BorderLayout.SOUTH);
								tryAgain.show();
										
								tmpButton2.addActionListener(new ActionListener() 
								{
									public void actionPerformed(ActionEvent e1)
									{
										
										newp = tmpText2.getText();
										tryAgain.setVisible(false);
										tryAgain.dispose();
										if (!pw.equals(newp))
										{
											JOptionPane.showMessageDialog(
												   null,
												   "Wrong Password!!!",
												   "Failing !!!",
												   JOptionPane.WARNING_MESSAGE);
											System.exit(0);
										}
										else
										{
											list.setListData(columnData);
											list.setCellRenderer(new MyCellRenderer());

											JMenuBar mb = new JMenuBar();
											fileMenu.add( createFileNewItem() );
											fileMenu.add( createFileExitItem() );
											mb.add( fileMenu );
												
											toolMenu.add( createSetPasswordItem() );
											mb.add( toolMenu );

											helpMenu.add( createHelperItem() );
											mb.add( helpMenu );
											frame.setJMenuBar( mb );
												
											JPanel columnPanel = new JPanel();
											columnPanel.setLayout( new GridLayout(1,3) );
											columnPanel.add( createUsernameButton() ); 
											columnPanel.add( createPasswordButton() ); 
											columnPanel.add( createRemarkButton() );
												
											JPanel buttonPanel = new JPanel();
											buttonPanel.add( createEditButton() ); 
											buttonPanel.add( createDeleteButton() ); 
												
											JPanel items = new JPanel();
											pb = new PanelBuilder();
											items.setLayout( new BorderLayout() );
											items.add( columnPanel, BorderLayout.NORTH );
											items.add( pb, BorderLayout.CENTER );
											items.add( buttonPanel, BorderLayout.SOUTH );
												
											frame.setContentPane(items);
											frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
											frame.show();
										}
									}
								});
							}
							else
							{
								list.setListData(columnData);
								list.setCellRenderer(new MyCellRenderer());

								JMenuBar mb = new JMenuBar();
								fileMenu.add( createFileNewItem() );
								fileMenu.add( createFileExitItem() );
								mb.add( fileMenu );
									
								toolMenu.add( createSetPasswordItem() );
								mb.add( toolMenu );

								helpMenu.add( createHelperItem() );
								mb.add( helpMenu );
								frame.setJMenuBar( mb );
									
								JPanel columnPanel = new JPanel();
								columnPanel.setLayout( new GridLayout(1,3) );
								columnPanel.add( createUsernameButton() ); 
								columnPanel.add( createPasswordButton() ); 
								columnPanel.add( createRemarkButton() );
									
								JPanel buttonPanel = new JPanel();
								buttonPanel.add( createEditButton() ); 
								buttonPanel.add( createDeleteButton() ); 
									
								JPanel items = new JPanel();
								pb = new PanelBuilder();
								items.setLayout( new BorderLayout() );
								items.add( columnPanel, BorderLayout.NORTH );
								items.add( pb, BorderLayout.CENTER );
								items.add( buttonPanel, BorderLayout.SOUTH );
									
								frame.setContentPane(items);
								frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
								frame.show();
							}
						}
				});
			}
			else
			{
				list.setListData(columnData);
				list.setCellRenderer(new MyCellRenderer());

				JMenuBar mb = new JMenuBar();
				fileMenu.add( createFileNewItem() );
				fileMenu.add( createFileExitItem() );
				mb.add( fileMenu );
					
				toolMenu.add( createSetPasswordItem() );
				mb.add( toolMenu );

				helpMenu.add( createHelperItem() );
				mb.add( helpMenu );
				frame.setJMenuBar( mb );
					
				JPanel columnPanel = new JPanel();
				columnPanel.setLayout( new GridLayout(1,3) );
				columnPanel.add( createUsernameButton() ); 
				columnPanel.add( createPasswordButton() ); 
				columnPanel.add( createRemarkButton() );
					
				JPanel buttonPanel = new JPanel();
				buttonPanel.add( createEditButton() ); 
				buttonPanel.add( createDeleteButton() ); 
					
				JPanel items = new JPanel();
				pb = new PanelBuilder();
				items.setLayout( new BorderLayout() );
				items.add( columnPanel, BorderLayout.NORTH );
				items.add( pb, BorderLayout.CENTER );
				items.add( buttonPanel, BorderLayout.SOUTH );
					
				frame.setContentPane(items);
				frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
				frame.show();

⌨️ 快捷键说明

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