你要想让程序记住你的修改结果是不可能的,应为你只要退出这个程序,所有的变量都就被清理了.当你再次重新运行程序时,所有的变量又被从新初始化赋值.你要想验证你的密码是不是被修改就得找那个保存文件的代码.将你的修改结果保存起来.要不然你是看不到结果的..或者你就把你的那些写入到数据库中.然后在查询数据库.
public boolean Update(String username,ArrayList array)
{
Connection con;
Statement sql;
ResultSet rs;
boolean Flag = false;
//桥接法驱动
try
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){}
//test为跟数据库关联的数据源名
con = DriverManager.getConnection("jdbc:odbc:test","","");
sql = con.createStatement();
/* 假设数据库中用户表如下:
* 表名:user
* 各字段:
* username(用户名) password(密码) pflag(用户权限)
*
*/
rs = sql.executeQuery("select password from user where username='"+username+"'");
while(rs.next()){
Flag = true;
String password = rs.getString(1);
array.add(password);
catch(SQLException e1)
System.err.println(e1) ;
return Flag;
代码不完整,还有几个类
public?class?ATMChangePass?extends?JFrame?{
private?JPanel?contentPane;
private?String?user;
private?Zhujiemian?owner;
public?ATMChangePass(Zhujiemian?owner,?String?user)?{
super("修改密码");
this.user=user;
this.owner=owner;
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contentPane?=?new?JPanel();
setContentPane(contentPane);
contentPane.setLayout(null);
contentPane.add(label);
contentPane.add(label_1);
txtOldPass?=?new?JPasswordField();
txtOldPass.setColumns(10);
contentPane.add(txtOldPass);
txtNewPass1?=?new?JPasswordField();
txtNewPass1.setColumns(10);
contentPane.add(txtNewPass1);
JButton?button?=?new?JButton("修改");
button.addMouseListener(new?MouseAdapter()?{
public?void?mouseClicked(MouseEvent?arg0)?{
doChangePass();
});
contentPane.add(button);
JButton?button_1?=?new?JButton("返回");
button_1.addMouseListener(new?MouseAdapter()?{
dispose();
ATMChangePass.this.owner.setVisible(true);
contentPane.add(button_1);
setVisible(true);
private?void?doChangePass(){
JOptionPane.showMessageDialog(this,?"原密码不正确!",?getTitle(),?JOptionPane.WARNING_MESSAGE);
return;
JOptionPane.showMessageDialog(this,?"新密码不正确!",?getTitle(),?JOptionPane.WARNING_MESSAGE);
JOptionPane.showMessageDialog(this,?"新密码不对应!",?getTitle(),?JOptionPane.WARNING_MESSAGE);
JOptionPane.showMessageDialog(this,?"修改成功!");
public?static?void?main(String?args[])throws?Exception{
new?ATMChangePass(null,?"user1");
private?void?yesButtonActionPerformed(java.awt.event.ActionEvent?evt)?{
//?TODO?add?your?handling?code?here:
String?name?=?usrNameText.getText();
String?pwd?=?pwdText.getText().hashCode()?+?"";
String?repwd?=?repeatPwdText.getText().hashCode()?+?"";
if?(pwd.equalsIgnoreCase(repwd))?{
JOptionPane.showMessageDialog(null,?"注册成功",?"提示",
JOptionPane.PLAIN_MESSAGE);
User?in?=?new?User(name,?pwd,?GetTime.getTime());
this.setVisible(false);
}?else?{
JOptionPane.showMessageDialog(null,?"两次密码不一致,重输入",?"提示",
package com.cube.limail.util;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;/**
* 加密解密类
public class Eryptogram
private static String Algorithm ="DES";
//定义 加密算法,可用 DES,DESede,Blowfish
static boolean debug = false ;
/**
* 构造子注解.
public Eryptogram ()
} /**
* 生成密钥
* @return byte[] 返回生成的密钥
* @throws exception 扔出异常.
public static byte [] getSecretKey () throws Exception
KeyGenerator keygen = KeyGenerator.getInstance (Algorithm );
SecretKey deskey = keygen.generateKey ();
System.out.println ("生成密钥:"+bytesToHexString (deskey.getEncoded ()));
if (debug ) System.out.println ("生成密钥:"+bytesToHexString (deskey.getEncoded ()));
return deskey.getEncoded ();
* 将指定的数据根据提供的密钥进行加密
* @param input 需要加密的数据
* @param key 密钥
* @return byte[] 加密后的数据
* @throws Exception
public static byte [] encryptData (byte [] input ,byte [] key ) throws Exception
SecretKey deskey = new javax.crypto.spec.SecretKeySpec (key ,Algorithm );
if (debug )
System.out.println ("加密前的字符串:"+new String (input ));
} Cipher c1 = Cipher.getInstance (Algorithm );
c1.init (Cipher.ENCRYPT_MODE ,deskey );
byte [] cipherByte =c1.doFinal (input );
return cipherByte ;
* 将给定的已加密的数据通过指定的密钥进行解密
* @param input 待解密的数据
* @return byte[] 解密后的数据
public static byte [] decryptData (byte [] input ,byte [] key ) throws Exception
Cipher c1 = Cipher.getInstance (Algorithm );
c1.init (Cipher.DECRYPT_MODE ,deskey );
byte [] clearByte =c1.doFinal (input );
System.out.println ("解密后的字符串:"+(new String (clearByte )));
} return clearByte ;
* @param byte[] b 输入要转换的字节码
String hs ="";
String stmp ="";
for (int n =0 ;n b.length ;n ++)
stmp =(java.lang.Integer.toHexString (b [n ] 0XFF ));
if (stmp.length ()==1 ) hs =hs +"0"+stmp ;
else hs =hs +stmp ;
if (n b.length -1 ) hs =hs +":";
} return hs.toUpperCase ();
* 字符串转成字节数组.
* @param hex 要转化的字符串.
* @return byte[] 返回转化后的字符串.
public static byte[] hexStringToByte(String hex) {
byte[] result = new byte[len];
char[] achar = hex.toCharArray();
for (int i = 0; i len; i++) {
return result;
private static byte toByte(char c) {
return b;
* 字节数组转成字符串.
* @param String 要转化的字符串.
* @return 返回转化后的字节数组.
public static final String bytesToHexString(byte[] bArray) {
StringBuffer sb = new StringBuffer(bArray.length);
String sTemp;
for (int i = 0; i bArray.length; i++) {
sTemp = Integer.toHexString(0xFF bArray[i]);
sb.append(0);
sb.append(sTemp.toUpperCase());
return sb.toString();
* 从数据库中获取密钥.
* @param deptid 企业id.
* @return 要返回的字节数组.
* @throws Exception 可能抛出的异常.
public static byte[] getSecretKey(long deptid) throws Exception {
byte[] key=null;
String value=null;
//CommDao dao=new CommDao();
// List list=dao.getRecordList("from Key k where k.deptid="+deptid);
//if(list.size()0){
//value=((com.csc.sale.bean.Key)list.get(0)).getKey();
key=hexStringToByte(value);
//}
if (debug)
System.out.println("密钥:" + value);
return key;
String en = null;
try {
byte[] key=hexStringToByte(this.key);
en = bytesToHexString(encryptData(data.getBytes(),key));
} catch (Exception e) {
e.printStackTrace();
return en;
String de = null;
de = new String(decryptData(hexStringToByte(data),key));
return de;
} 加密使用: byte[] key=Eryptogram.getSecretKey(deptid); //获得钥匙(字节数组)
byte[] tmp=Eryptogram.encryptData(password.getBytes(), key); //传入密码和钥匙,获得加密后的字节数组的密码
password=Eryptogram.bytesToHexString(tmp); //将字节数组转化为字符串,获得加密后的字符串密码解密与之差不多
以上就是土嘎嘎小编为大家整理的设置密码的java代码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!