发表于: 2019-08-29 20:18:14

1 714


今天做了什么:

主要是学习知识点,偏理论.


收获:
任务5的基础概念:
MVC    spring- interceptor
安全    md5/des

通信协议    cookie


1)spring- interceptor
拦截用户的请求并进行相应的处理
1.1)典型应用场景:
日志记录:记录请求信息的日志,以便进行信息监控、信息统计、计算Page View等。
权限检查:如登录检测,进入处理器检测检测是否登录,如果没有直接返回到登录页面;
性能监控:有时候系统在某段时间莫名其妙的慢,可以通过拦截器在进入处理器之前记录开始时间,在处理完后记录结束时间,从而得到该请求的处理时间(如果有反向代理,如apache可以自动记录);
通用行为:读取cookie得到用户信息并将用户对象放入请求,从而方便后续流程使用,还有如提取Locale、Theme信息等,只要是多个处理器都需要的即可使用拦截器实现。
…………本质也是AOP(面向切面编程),也就是说符合横切关注点的所有功能都可以放入拦截器实现。
1.2)拦截器的3个回调方法:
preHandle预处理回调方法,实现处理器的预处理(如登录检查),第三个参数为响应的处理器(如我们上一章的Controller实现);
返回值:true表示继续流程(如调用下一个拦截器或处理器);
             false表示流程中断(如登录检查失败),不会继续调用其他的拦截器或处理器,此时我们需要通过response来产生响应;
postHandle后处理回调方法,实现处理器的后处理(但在渲染视图之前),此时我们可以通过modelAndView(模型和视图对象)对模型数据进行处理或对视图进行处理,modelAndView也可能为null。

afterCompletion: 整个请求处理完毕回调方法,即在视图渲染完毕时回调,如性能监控中我们可以在此记录结束时间并输出消耗时间,还可以进行一些资源清理,类似于try-catch-finally中的finally,但仅调用处理器执行链中preHandle返回true的拦截器的afterCompletion


图:执行流程.

2)md5
全称md5信息摘要算法.可用于对密码做加密存储:用户设置密码时,服务端只需保存这个密码的md5而忽略密码本身,以后验证用户身份时,将输入密码的md5与之前的md5比较即可检验密码合法性.

2.1)原理:

可以将整个文件当做一个大文本信息,通过不可逆的字符串变换算法,产生一个唯一的MD5信息摘要,该md5值是全世界独一无二的,文件的任何变动也会导致md5值的变化,因此可以用此保证文件的数据一致性.

MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值

2.2)md5特性:
  • 不可逆,无法得知某md5值原来的字符串是什么
  • 高度离散型,原信息的细微变化也会导致md5发生巨大变化
  • 压缩性,md5值长度固定,无论原数据长度如何
  • 弱碰撞性,已知原数据和其md5值,想找到一个具有相同md5值的数据非常困难

2.3)典型应用场景:

  • 密码的加密存储,用户设置密码时,服务端只记录这个密码的MD5,而不记录密码本身,以后验证用户身份时,只需要将用户输入的密码再次做一下MD5后,与记录的MD5作一个比较即可验证其密码的合法性。
  • 数字签名,比如发布一个程序,为了防止别人在你的程序里插入病毒或木马,你可以在发布这个程序的同时,公开这个程序文件的MD5码,这样别人只需要在任何地方下载这个程序后做一次MD5,然后跟公开的这个MD5作一个比较就知道这个程序是否被第三方修改过。
  • 文件完整性验证,比如当下载一个文件时,服务器返回的信息中包括这个文件的md5,在本地下载完毕时进行md5,将两个md5值进行比较,如果一致则说明文件完整没有丢包现象。
  • 文件上传,比如百度云实现的秒传,就是对比你上传的文件md5在百度服务器是否已经存在了。

总结起来我的理解就是:md5值就像是一段信息独一无二的id,它能很确凿地确认一段信息的"身份".


3)DES:

由IBM公司研制的一种对称密码算法, 是一个分组加密算法,典型的DES以64位为分组对数据加密,加密和解密用的是同一个算法。

(关于对称密码算法:网络安全通信中要用到两类密码算法,一类是对称密码算法,另一类是非对称密码算法。对称密码算法有时又叫传统密码算法、秘密密钥算法或单密钥算法,非对称密码算法也叫公开密钥密码算法或双密钥算法。对称密码算法的加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加密解密密钥是相同的。它要求发送者和接收者在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加密解密。只要通信需要保密,密钥就必须保密。)

在通信网络的两端,双方约定一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式在公共通信网(如电话网)中传输到通信网络的终点,数据到达目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样,便保证了核心数据(如PIN、MAC等)在公共通信网中传输的安全性和可靠性。

DES算法的3个入参:Key、Data、Mode

Key为8个字节共64位,是DES算法的工作密钥

Data也为8个字节64位,是要被加密或被解密的数据

Mode为DES的工作方式,有两种:加密或解密。 如Mode为加密,则用Key 去把数据Data进行加密, 生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。

总结起来我的理解就是:DES加密就像是通信双方约定好一套加密规则(key),双方在传输信息过程中通过这套复杂的规则转换他们的信息,第三者因为没有key,就无法破解信息内容.

问题:

明天计划:

写拦截器实现登录验证.



返回列表 返回列表
评论

    分享到