发表于: 2018-01-21 22:47:25

1 705


今天完成的事情

1.MD5( Message Digest Algorithm)信息摘要算法,用于确保信息传输完整一致。又叫,摘译算法,哈希算法。

特点:

1.压缩性:任意长度的数据,算出的MD5值长度是固定的。

2.容易计算:从原数据计算出MD5值很容易。

3.抗修改性:对原数据进行任何修改,哪怕只修改1个字符,所得到的MD5值的区别很大。

4.强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(伪造数据)是非常困难的。


登陆系统中使用:

如果不使用加密算法,存在数据库中的密码是明文,如果数据库被不正当进入,用户的账号信息就完全暴露了。因此是用加密算法。

1.用户注册账号以后,密码经过MD5算法加密,然后存储到数据库中。

2.用户登陆的时候,对用户输入的密码计算出MD5加密后的值,然后到数据库比对,如果比对相同,则登陆成功。


java MD5实现:

import java.math.BigInteger;
import java.security.MessageDigest;

public class MD5 {

public static String getMD5(String str) {
String out = null;
       try {
//生成一个MD5加密计算摘要
           MessageDigest md = MessageDigest.getInstance("MD5");
           //计算MD5函数
           md.update(str.getBytes());
           // digest()最后确定返回md5 hash值,返回值为8为字符串。因为md5 hash值是16位的hex值,实际上就是8位的字符
           // BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值
           out = new BigInteger(1, md.digest()).toString(16);
       } catch (Exception e) {
e.printStackTrace();
       }
return out;
   }

}

写一个注册controller和jsp

//注册
@RequestMapping(value = "/register",method = RequestMethod.GET)
public String registerget(){
return "register";
}

@RequestMapping(value = "/register",method = RequestMethod.POST)
public String registerpost(
@RequestParam("userName") String u,
                  @RequestParam("userPassword") String pw) {
   student1.setUserName(u);
   logger.info("setname ok");
   student1.setPassWord(MD5.getMD5(pw));   //把用户输入的密码使用MD5加密,然后存入数据库 
   logger.info("setpassword ok");
   Date day = new Date();
   student1.setCreateTime(day);
   student1.setUpdateTime(day);
   logger.info("settime ok");
   studentMapper.insert(student1);
   return "login";
}

会得到一个32位的字符串。

登陆验证:

//使用md5加密,然后和数据库中存储的内容对比。
String md5password = MD5.getMD5(pw);
if(u.equals(student.getUserName()) && md5password.equals(student.getPassWord()))


2.深度思考

1.什么是session?什么是cookie?session和cookie有什么区别?什么场景适用于session?什么场景适用于cookie?

1.Cookies:通过客户端来保持状态信息

Cookie是服务器发给客户端的特殊信息("key","value")

cookie是以文本的方式保存在客户端,每次请求时都带上它

适用场景:客户端记住账号和密码,及个人喜好设置。


2.Session:通过服务器端来保持状态信息

Session是服务器和客户端之间的一系列的交互动作

服务器为每个客户端开辟内存空间,从而保持状态信息

由于需要客户端也要持有一个标识(id),因此,也要求服务器端和客户端传输该标识,

标识(id)可以借助Cookie机制或者其他的途径来保存

 每次客户端发送请求,服务端都检查是否含有sessionId。

如果有,则根据sessionId检索出session并处理;如果没有,则创建一个session,并绑定一个不重复的sessionId。

适用场景:保持登陆状态,登陆以后可以在限制时间内访问需要登陆才可以访问的页面。

2.拦截器、过滤器、监听器各有什么作用?


遇到的问题:

1.Session还是没理解透,有点抽象。

2.今天看了一位师兄的日报,发现自己的代码写的很乱,重复代码很多。

明天的计划

1.学习拦截器,过滤器,监听器。

2.找优秀的代码学习好的编码格式。

3.整理登陆注册模块的代码。


任务5开始时间:2018.1.20

预计完成时间:2018.1.23

禅道:http://task.ptteng.com/zentao/project-task.html





返回列表 返回列表
评论

    分享到