📄 md5.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.applet.*;
import java.sql.*;
import java.applet.Applet;
import javax.swing.border.*;
import java.security.*;
import java.util.*;
public class md5 extends JFrame implements ActionListener{
public static void main(String args[]){ //主函数实现
JFrame J=new md5();
J.setSize(500,400);
J.setVisible(true);
jiami();
}
public md5(){ //主界面实现如下:
super("用户登录口令的安全认证实现");
setResizable(false);
username=new JLabel("Username :");
password=new JLabel("Password :");
input1=new TextField(10);
input2=new TextField(10);
input2.setEchoChar('*');
add(Panel1);
add(Panel2);
add(Panel3);
input1.addActionListener(this);
input2.addActionListener(this);
setLayout(new GridLayout(3,3,0,0));
Panel1.setLayout(new FlowLayout());
Panel1.add(username);
Panel1.add(input1);
Panel2.add(password);
Panel2.add(input2);
Panel3.setLayout(new FlowLayout());
Panel3.add(Bdenglu);
Panel3.add(Bzhuce);
Panel3.add(Bquxiao);
Bdenglu.addActionListener(this);
Bzhuce.addActionListener(this);
Bquxiao.addActionListener(this);
Bdenglu.setFont(new java.awt.Font("SansSerif",0,13)); //登陆按钮功能实现
Bdenglu.setForeground(Color.black);
Bdenglu.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent e){
String B,D;
B=input1.getText().trim();
D=input2.getText().trim();
md5 ur=new md5(B);
String post1=ur.compute();
md5 pw=new md5(D);
String post2=pw.compute();
dispose();
if(input1.getText().trim().equals("")){
JOptionPane.showMessageDialog(null,"用户名不可为空!");
md5 xx=new md5();
xx.setSize(500,400);
xx.setVisible(true);
return ;
}
if(input2.getText().trim().equals("")){
JOptionPane.showMessageDialog(null,"密码不可为空!");
md5 xx=new md5();
xx.setSize(500,400);
xx.setVisible(true);
return;
}
try{ //读取数据库中的数据
String url="jdbc:odbc:mydata";
Connection con=DriverManager.getConnection(url,"",null);
Statement stmt=con.createStatement();
String sql="select * from Information ";
rs=stmt.executeQuery(sql);
boolean exist=true;
while(rs.next()){
String s1=rs.getString("username");
String s2=rs.getString("password");
System.out.println(s1+","+s2);
if(!post1.equals(s1)||!post2.equals(s2)){
exist=false;
}
else{
exist=true;
}
if(exist){
JOptionPane.showMessageDialog(null,"亲爱的用户,您已成功登陆系统!");
break;
}
}
if(!exist){
JOptionPane.showMessageDialog(null,"用户名或密码错误,请重新填写!");
md5 xx=new md5();
xx.setSize(500,400);
xx.setVisible(true);
}
stmt.close();
con.close();
}
catch(SQLException ex){}
}});
Bzhuce.setFont(new java.awt.Font("SansSerif",0,13));//注册按钮功能实现
Bzhuce.setForeground(Color.black);
Bzhuce.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent e){
dispose();
register x=new register();
x.register();
}});
Bquxiao.setFont(new java.awt.Font("SansSerif",0,13)); //取消按钮功能实现
Bquxiao.setForeground(Color.BLACK);
Bquxiao.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent e){
dispose();
}});}
public class register extends JFrame{ //注册窗口实现
void register(){
Label Nusername,Npassword,Npassword1,bt;
final TextField Ninput1,Ninput2,Ninput3;
Panel BT=new Panel();
Panel uN=new Panel();
Panel PN=new Panel();
Panel PNN=new Panel();
Panel SB=new Panel();
JButton Subtt=new JButton("SUBMISSION");
JButton Fdenglu=new JButton("HOME");
Nusername=new Label(" Username :");
Npassword=new Label(" Passwords :");
Npassword1=new Label("Passwords Again :");
bt=new Label(" REGISTER WINDOW");
bt.setFont(new java.awt.Font("SansSerif",0,20));
Ninput1=new TextField(15);
Ninput2=new TextField(15);
Ninput2.setEchoChar('*');
Ninput3=new TextField(15);
Ninput3.setEchoChar('*');
setLayout(new GridLayout(5,3,0,0));
add(BT);
add(uN);
add(PN);
add(PNN);
add(SB);
uN.setLayout(new FlowLayout());
uN.add(Nusername);
uN.add(Ninput1);
PN.setLayout(new FlowLayout());
PN.add(Npassword);
PN.add(Ninput2);
PNN.setLayout(new FlowLayout());
PNN.add(Npassword1);
PNN.add(Ninput3);
SB.setLayout(new FlowLayout());
SB.add(Subtt);
SB.add(Fdenglu);
BT.setLayout(new BorderLayout(20,30));
BT.add(bt);
setResizable(false);
setSize(500,400);
setVisible(true);
Subtt.setFont(new java.awt.Font("SansSerif",0,13)); //提交按钮功能实现
Subtt.setForeground(Color.black);
Subtt.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent e){
String A,B,C,D;
A=Ninput1.getText().trim();
C=Ninput3.getText().trim();
md5 md51=new md5(A);
String postString=md51.compute();
md5 md52=new md5(C);
String postString3=md52.compute();
dispose();
String Nuser=Ninput1.getText();
String Npsw=Ninput2.getText();
String Npsw1=Ninput3.getText();
show y=new show();
tishi1 t=new tishi1();
tishi2 x=new tishi2();
if(Nuser.equals("")||Npsw.equals("")||Npsw1.equals("")){
t.tishi1();
}
else if(Npsw.equals(Npsw1)){ //向数据库中加入数据
String url="jdbc:odbc:mydata";
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(java.lang.ClassNotFoundException ev){
System.err.print("ClassNotFoundException :");
System.err.println(ev.getMessage());}
try{ //向信息表中写入加密后的数据
Connection con=DriverManager.getConnection(url,"",null);
Statement stmt=con.createStatement();
stmt.executeUpdate("insert into Information(Username,Password)"+
"values('"+postString+"','"+postString3+ "')" );
stmt.close();
con.close();
}catch(SQLException ex){System.out.println(ex.getMessage());}
x.tishi2(); }
else if(!Npsw.equals(Npsw1)){
y.tishi();}
dispose();
}});
Fdenglu.setFont(new java.awt.Font("SansSerif",0,13));//返回登陆窗口功能实现
Fdenglu.setForeground(Color.black);
Fdenglu.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent e){
dispose();
md5 xx=new md5();
xx.setSize(500,400);
xx.setVisible(true);
}});}}
public class show extends JFrame{ //提示窗口实现
void tishi(){
Label onee;
Panel one1=new Panel();
Panel two=new Panel();
onee =new Label("您输入的密码不一致,是否重新填写?");
setLayout(new GridLayout(2,2));
add(one1);
add(two);
one1.add(onee);
two.setLayout(new FlowLayout(FlowLayout.CENTER,40,0));
two.add(yes);
two.add(no);
setResizable(false);
setSize(300,100);
setVisible(true);
yes.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent e){
dispose();
register y=new register();
y.register();
}});
no.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent e){
dispose();
}});}}
public class tishi1 extends JFrame{
void tishi1(){
Label one;
Panel one1=new Panel();
Panel two=new Panel();
one =new Label("您填写的资料不完整,是否继续填写?");
setLayout(new GridLayout(2,2));
add(one1);
add(two);
one1.add(one);
two.setLayout(new FlowLayout(FlowLayout.CENTER,40,0));
two.add(yes);
two.add(no);
setResizable(false);
setSize(300,100);
setVisible(true);
yes.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent e){
register y=new register();
y.register();
dispose();
}});
no.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent e){
dispose();
}});}}
public class tishi2 extends JFrame{ //注册成功提示实现
void tishi2(){
Label one;
Panel one1=new Panel();
Panel two=new Panel();
one =new Label("亲爱的用户,您已经成功注册,是否返回登陆窗口?");
setLayout(new GridLayout(2,2));
add(one1);
add(two);
one1.add(one);
two.setLayout(new FlowLayout(FlowLayout.CENTER,40,0));
two.add(yes);
two.add(no);
setResizable(false);
setSize(300,100);
setVisible(true);
yes.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent e){
dispose();
md5 y=new md5();
y.setSize(500,400);
y.setVisible(true);
}});
no.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent e){
dispose();
}});}}
public void actionPerformed(ActionEvent e){
String userN=input1.getText();
String psw=input2.getText();
}
class closeWin extends WindowAdapter{
public void windowClosing(WindowEvent e){
Window w=e.getWindow();
w.dispose();
}
}
public void keyTyped(KeyEvent evt){}
public void keyPressed(KeyEvent evt){
int key=evt.getKeyCode();
if(key==KeyEvent.BUTTON1_DOWN_MASK);
}
public void keyReleased(KeyEvent evt){}
ResultSet rs; //md5算法实现
Connection con;
private String inStr;
private MessageDigest md5;
public md5(String inStr){ //构造函数
this.inStr = inStr;
try
{
this.md5 = MessageDigest.getInstance("MD5");
}
catch (Exception e)
{
System.out.println(e.toString());
e.printStackTrace();
}}
public String compute() //关键的md5算法
{
char[] charArray = this.inStr.toCharArray();
byte[] byteArray = new byte[charArray.length];
for (int i=0; i<charArray.length; i++)
byteArray[i] = (byte) charArray[i];
byte[] md5Bytes = this.md5.digest(byteArray);
StringBuffer hexValue = new StringBuffer();
for (int i=0; i<md5Bytes.length; i++)
{
int val = ((int) md5Bytes[i] ) & 0xff;
if (val < 16) hexValue.append("0");
hexValue.append(Integer.toHexString(val));
}
return hexValue.toString();
}
static void jiami() //加密后的表
{
String url="jdbc:odbc:mydata";
String sql="create table Information"+"(Username VARCHAR(255) ,"+"Password VARCHAR(255))";
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch(java.lang.ClassNotFoundException e){}
try{
Connection con=DriverManager.getConnection(url,"",null);
Statement stmt=con.createStatement();
try{
stmt.executeUpdate(sql);
System.out.println("student table created");
}catch(Exception ex){}
stmt.close();
con.close();
}catch(SQLException ex){}
}
JLabel username,password;
TextField input1,input2;
private Panel Panel1=new Panel();
private Panel Panel2=new Panel();
private Panel Panel3=new Panel();
private JButton Bdenglu=new JButton("LOGGING ON");
private JButton Bzhuce=new JButton("REGISTER");
private JButton Bquxiao=new JButton("CANCEL");
JButton yes=new JButton ("YES");
JButton no=new JButton("NO");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -