密码数据MD5加密

              密码数据MD5加密

一、程序说明

  1.数据库 MySQL

  2.JQuery表单验证

  3.开发环境:win7+tomcat6+myeclipse9.0

二、基本流程图

三、运行界面

  1.注册界面

  

  2.表单验证

  

  3.提交注册信息

  

  4.数据库信息

 

 四、程序主要代码

  1.MD5类

public class Md5 {
	
	public final static String getMD5(String str){
		try {
			MessageDigest md = MessageDigest.getInstance("MD5");			//创建具有指定算法名称的摘要
			md.update(str.getBytes());                    					//使用指定的字节数组更新摘要
			byte mdBytes[] = md.digest();                					//进行哈希计算并返回一个字节数组
			
			String hash = "";
			for(int i= 0;i<mdBytes.length;i++){           //循环字节数组
				int temp;
				if(mdBytes[i]<0)                          //如果有小于0的字节,则转换为正数
					temp =256+mdBytes[i];
				else
					temp=mdBytes[i];
				if(temp<16)
					hash+= "0";
				hash+=Integer.toString(temp,16);         //将字节转换为16进制后,转换为字符串
			}
			return hash;
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		return null;
	}
}

  2.UserDao类

UserDao
1 public class UserDao {
2 private static UserDao instance = null ;
3 /**
4 * 返回一个UserDao实例
5 * @return
6 */
7 public static UserDao getInstance(){
8 if (instance == null ) instance = new UserDao();
9 return instance;
10 }
11
12 public boolean checkname(User user){
13 Connection con = null ;
14 try {
15 con = DBCon.getConn(); // 创建数据库连接
16   String sql = " select count(id) as count from tb_user where name=? " ;
17 PreparedStatement pstmt = con.prepareStatement(sql);
18 pstmt.setString( 1 , user.getUserName()); // 对SQL语句第1个参数赋值
19   ResultSet rs = pstmt.executeQuery();
20 if (rs.next()) {
21 if (rs.getInt( " count " ) == 0 ){
22 return true ;
23 }
24 }
25 } catch (Exception ex){
26 ex.printStackTrace();
27 } finally {
28 try {
29 con.close();
30 } catch (SQLException e) {
31 e.printStackTrace();
32 }
33 }
34 return false ;
35 }
36
37 /**
38 * 保存用户注册信息
39 * @param user
40 * @return
41 */
42
43 public boolean saveUser(User user){
44 Connection con = null ;
45 try {
46 con = DBCon.getConn(); // 创建数据库连接
47   String sql = " insert into tb_user(name,pwd,sex,age,createTime) values(?,?,?,?,?) " ;
48 PreparedStatement pstmt = con.prepareStatement(sql); // 预编译insert语句
49   pstmt.setString( 1 , user.getUserName()); // 对SQL语句第1个参数赋值
50   pstmt.setString( 2 , user.getUserPwd()); // 对SQL语句第2个参数赋值
51   pstmt.setString( 3 , user.getUserSex()); // 对SQL语句第3个参数赋值
52   pstmt.setInt( 4 , user.getUserAge()); // 对SQL语句第4个参数赋值
53   pstmt.setString( 5 , user.getUserLoginTime()); // 对SQL语句第5个参数赋值
54   int row = pstmt.executeUpdate(); // 执行插入操作并返回所影响的行数
55   if (row == 1 )
56 return true ; // 数据插入成功返回true
57   } catch (Exception ex){
58 ex.printStackTrace();
59 } finally {
60 try {
61 con.close();
62 } catch (SQLException e) {
63 e.printStackTrace();
64 }
65 }
66 return false ;
67 }
68
69 }

  3.js(表单验证)

check
1 $(document).ready( function (){
2
3 $( " form :input.required " ).each( function (){
4 var $required = $( " <strong class='high'> *</strong> " );
5 $( this ).parent().append($required);
6 });
7
8 // 重置操作
9   $( " #res " ).click( function (){
10 $( " .formtips " ).remove();
11 });
12
13 $( ' form :input ' ).blur( function (){
14 var $parent = $( this ).parent();
15
16 $parent.find( " .formtips " ).remove();
17 // 验证账户
18   if ($( this ).is( ' #username ' )){
19
20 if ( this .value == "" || this .value.length < 3 ){
21 var Msg = " <font color=red>账户名最短不能小于三位<font> " ;
22 $parent.append( ' <span class = "formtips onError"> ' + Msg + ' </span> ' );
23 } else {
24 var username = $( " #username " ).val();
25 $.ajax({
26 type: " post " ,
27 url: " check.jsp?type=name " ,
28 data:{username:username},
29 success: function (data,textStatus){
30 if (data[ 0 ].success == " success " ){
31 var Msg = " <font color=green>恭喜你,该用户名尚未被注册!</font> " ;
32 $parent.append( ' <span class="formtips onSuccess"> ' + Msg + ' </span> ' );
33
34 } else {
35 var Msg = " <font color=red>用户名已经存在,请重新输入!</font> " ;
36 $parent.append( ' <span class="formtips onError"> ' + Msg + ' </span> ' );
37 }
38
39 },
40 error: function (data, textStatus) {
41 }
42 });
43 }
44 }
45 // 验证密码
46   if ($( this ).is( ' #userpwd1 ' )){
47 if ( this .value == "" || this .value.length < 6 ){
48 var errorMsg = " <font color=red>密码最短不能小于6位<font> " ;
49 $parent.append( ' <span class = "formtips onError"> ' + errorMsg + ' </span> ' );
50 } else {
51 var okMsg = " <font color=green>输入符合格式<font> " ;
52 $parent.append( ' <span class="formtips onSuccess"> ' + okMsg + ' </span> ' );
53 }
54 }
55 // 验证确认密码
56   // 2011/04/30 叶茂安修改
57   if ($( this ).is( ' #userpwd2 ' )){
58 if ($( this ).val() == $( " #userpwd1 " ).val() && this .value != "" ){
59 var Msg = " <font color=green>密码输入正确</font> " ;
60 $parent.append( ' <span class = "formtips onSuccess"> ' + Msg + ' </span> ' );
61 }
62 else {
63 var Msg = " <font color=red>请确认两次输入一致且不为空</font> " ;
64 $parent.append( ' <span class="formtips onError"> ' + Msg + ' </span> ' );
65 }
66 }
67 });
68
69
70 $( " #send " ).click( function (){
71 var username = $( " #username " ).val();
72 var userpwd = $( " #userpwd1 " ).val();
73 var userage = $( " #userage " ).val();
74 var usersex = $( " #usersex " ).find( " option:selected " ).text();
75 $.ajax({
76 type: " post " ,
77 url: " saveuser.jsp " ,
78 contentType: " application/x-www-form-urlencoded; charset=utf-8 " ,
79 cache: true ,
80 data:{ username:username,userpwd:userpwd,userage:userage,usersex:usersex},
81 success: function (data,textStatus){
82 if (data[ 0 ].success == " success " ){
83 var Msg = " success! " ;
84 } else {
85 var Msg = " failure! " ;
86 }
87 alert(Msg);
88 },
89 error: function (data, textStatus) {
90 }
91 });
92 });
93 });

  4.saveuser.jsp

saveuser.jsp
1 <% @ page language = " java " contentType = " text/html; charset=UTF-8 " pageEncoding = " UTF-8 " %>
2   <% @ page import = " java.util.* " %>
3   <% @ page import = " com.swyma.md5.model.* " %>
4   <% @ page import = " com.swyma.md5.util.* " %>
5   <% @ page import = " com.swyma.md5.dao.* " %>
6
7   <% response.setHeader( " Content-Type " , " text/json " ); %>
8   <%
9
10 request.setCharacterEncoding( " utf-8 " );
11 String userName = request.getParameter( " username " ); // 用户名
12   String userPwd = request.getParameter( " userpwd " ); // 用户密码
13   String userAge = request.getParameter( " userage " ); // 用户年龄
14   int age = 0 ;
15 if (userAge != null &&! userAge.equals( "" )){
16 age = Integer.parseInt(userAge); // 转换为int值
17 }
18 String userSex = request.getParameter( " usersex " ); // 用户性别
19 if (userSex.equals( " " )){
20 userSex = " male " ;
21 } else if (userSex.equals( " " )){
22 userSex = " female " ;
23 }
24 // System.out.println(userName+" "+userPwd+" "+userSex+" "+userAge);
25 User user = new User(); // 创建用户信息对象,将注册信息封装
26 user.setUserName(userName.trim());
27 user.setUserPwd(Md5.getMD5(userPwd)); // 密码加密后封装到User对象中
28 user.setUserAge(age);
29 user.setUserSex(userSex);
30 // 获取当前系统时间的字符串格式
31 String time = CalendarUtil.getParticularDateTime(Calendar.getInstance());
32 user.setUserLoginTime(time);
33 boolean res = UserDao.getInstance().saveUser(user); // 保存注册信息
34 if (res){
35 response.getWriter().write( " [{\"success\":\"success\"}] " );
36 } else {
37 response.getWriter().write( " [{\"success\":\"failure\"}] " );
38 }
39 %>

  5.数据库(mysql)

tb_user
1 DROP TABLE IF EXISTS `md5`.`tb_user`;
2 CREATE TABLE `md5`.`tb_user` (
3 `id` int ( 11 ) NOT NULL AUTO_INCREMENT,
4 `name` varchar ( 20 ) NOT NULL ,
5 `pwd` varchar ( 40 ) NOT NULL ,
6 `sex` varchar ( 5 ) NOT NULL ,
7 `age` int ( 11 ) NOT NULL ,
8 `createTime` datetime NOT NULL ,
9 PRIMARY KEY (`id`)
10 ) ENGINE = InnoDB DEFAULT CHARSET = utf8;

四、个人总结

  1.因为从来没有接触正式的项目,所以很少考虑到用户注册密码加密,这次是在网上看了一些信息才发觉这些密码数据之类的东西确实有必要进行加密。这样才能在一定程序上解决数据保密问题。

  2.不过在做这个小例子时还是遇到一些没有解决的问题:

    1)这个md5加密,因为在数据库里还是明码显示出生成的md5字符,假如其它用户发现取到了这个md5数据,是不是能很快的对它进行破密呢?

    2)是不是有更好的数据加密方法对密码进行加密呢?

转载于:https://www.cnblogs.com/maoan/archive/2011/05/26/2058279.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值