登录时候 怎么加密解密啊
数据库中的 密码是经过加密后的 十六进制数据
我登录时候 输入用户名 密码 密码参数经过加密程序后 通过和 从数据库中查询出来的密码对比吗
是否就这样做登录呢 有哪些需要注意的问题啊
第一次涉足这块 还请各位大哥 帮帮忙 感激不尽
------解决方案--------------------你说的对,这样能保证连系统管理员都无法看到你的密码。
------解决方案--------------------验证密码的时候登录密码加密,从数据库中读出的密码也是经过加密的,然后比较的是加密后的密码,这样才能起到加密的效果
------解决方案--------------------找个加密方法,在set方法里面套用这个加密方法,其他地方就不用管了。
写到数据库里面的也都是加密好的数据了
因为你加密方法写在set方法里,你拿到的就已经全都是加密好的数据,所以你要比较直接比较就行了。
在你想要显示密码的地方,再解密一下。不过要把密码显示出来的地方不太多吧。
或许在用户注册成功之后会给他送一个显示密码的邮件。
------解决方案--------------------
------解决方案--------------------就是啊,密码用MD5加密后放入数据库,登陆时从数据库取出然后和输入的密码(也要加密)进行比较!
------解决方案--------------------package com.ysg;
import
java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import
java.security.NoSuchAlgorithmException;
import sun.misc.BASE64Encoder;
/**
*
* @author 余胜国
* @msg.MD5(信息摘要)加密.
*
*/
public class TestMD5 {
/**
* 按MD5编码
*
* @param str
* @return
* @throws NoSuchAlgorithmException
* @throws Unsupported
EncodingException */
public String EncoderByMd5(String str) throws NoSuchAlgorithmException,
UnsupportedEncodingException {
// 确定计算方法(实例化MD5信息摘要)
MessageDigest md5 = MessageDigest.getInstance("MD5");
BASE64Encoder base64en = new BASE64Encoder();
// 加密后的字符串
String newstr = base64en.encode(md5.digest(str.getBytes("GB2312")));
return newstr;
}
/**
* 程序入口
*
* @param args
*/
public static void main(String[] args) {
try {
TestMD5 md5 = new TestMD5();
String pwddb = "1aEUkwwECG62BQx+unQ0RQ==";// 假如这是数据库保存的密码(数据库保存的密码为之前按MD5加密过的字符串)
String pwdin = "yushengguo";// 用户在文本框输入的密码
String encodePwdin = md5.EncoderByMd5(pwdin);// 按MD5把用户输入的密码加密后与数据库保存的密码进行对比
/**
* 如果数据库保存的那一堆东西(MD5加过密的)与我输的字符串按MD5加密后进行对比。 如果相等,证明在未加密之前也是相等的。
* 另外,说明一点,MD5是单向加密,也就是不可逆, 通俗点说就是,不可以解密,唯一的办法就如实例一样,都按MD5加密后对比.
* 能理解???
*/
if (pwddb.equals(encodePwdin)) {
System.out.println("密码正确!");
} else {
System.out.println("密码错误!");
}
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
//=====================
刚好给朋友写了一个,拿来给你参考下,希望对你有帮助