📄 face.java
字号:
/* *************************************************/
/* 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 + -