数据库中的 密码是经过加密后的 十六进制数据 我登录时候 输入用户名 密码 密码参数经过加密程序后 通过和 从数据库中查询出来的密码对比吗
是否就这样做登录呢 有哪些需要注意的问题啊 第一次涉足这块 还请各位大哥 帮帮忙 感激不尽
是否就这样做登录呢 有哪些需要注意的问题啊 第一次涉足这块 还请各位大哥 帮帮忙 感激不尽
解决方案 »
- java怎么实现邮箱验证码失效的
- socket链接服务器,发送header的请求中为什么要设置host端口号?
- 一个display的问题
- 请问有谁做过用idea4.0进行web的开发的(idea+tomcat5.0).近者有分
- 一个JAVA的面试题~!各位前辈帮我看看~!在线急等
- Jboss下JMS的Topic非持久性操作成功,为何持久性部署时总报错??
- struts中标签的控制问题
- 高手请进, 如何获取与特定应用程序有关的环境属性?
- 菜鸟请教:什么叫回叫函数?具体作用是什么?
- 技术小白求助
- Hibernate o3p0连接池的一些问题
- 求教各位ibatis"数据大小超出此类型的最大值"的异常,内详~
或许在用户注册成功之后会给他送一个显示密码的邮件。
做法没有问题。我们都是通常这样比较的,因为一般密码的加密算法都采用MD5,而MD5算法是不可逆的,也就是说理论上不可能解密。
比较成功后,将你的用户ID以及用户名或者密码放置到session中。以便其他页面使用或者做拦截器验证是否登录使用。
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 UnsupportedEncodingException
*/
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();
}
}}
//=====================
刚好给朋友写了一个,拿来给你参考下,希望对你有帮助