[TOC]
## 文献:GBT 38674-2020信息安全技术 应用软件安全编程指南
![](https://img.kancloud.cn/f5/2e/f52e0ae8b4725e9914e7755bf91d371e_988x316.png)
## 问题01:什么是MD5?
MD5消息摘要算法(英语:MD5: **Message-Digest Algorithm**),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节,32个16进制)的散列值(hash value),用于**确保信息传输完整一致**。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 中被加以规范。
* [ ] 1. 不可逆
* [ ] 2. 压缩性(简化信息、定长结果)
* [ ] 3. 抗碰撞性
* [ ] 4. 抗修改性
* [ ] 5. 易计算
### 作用:
> 1. 文件一致性校验
> 2. 密码加密
java.security.MessageDigest
[https://docs.oracle.com/javase/8/docs/api/](https://docs.oracle.com/javase/8/docs/api/)
## 问题02:MD5的基本步骤?
1. 初始化信息摘要
```
MessageDigest md = MessageDigest.getInstance("SHA-256");
```
2. 使用字节数组更新信息摘要
```
md.update(str.getBytes());
```
3. 完成信息摘要
```
byte ss[] = md.digest();
```
4. 将字节数组转为十六进制
```
reStr = bytes2String(ss);
```
## 问题03:利用MD5对用户信息进行加密。
![](https://img.kancloud.cn/7e/a7/7ea716d54cb3baf7c9baa995a536bfa4_970x157.png)
```
//对密码进行加密
password = Conver2MD5.getSHA256(password);
```
> 同一字符,加密后的16进制数是不变的,但自从出现彩虹表,可以反查数据
> 为了防止彩虹表反查,需要进行**加盐**处理。
```
Conver2MD5.getSHA256(username+password+"pzhu");
```
## 问题04:实现前后端加密。
* [ ] 虽然对数据库进行了加密,但是在传输过程中并没有加密
[http://jwci.pzhu.cn/jsxsd/xk/LoginToXk](http://jwci.pzhu.cn/jsxsd/xk/LoginToXk)
![](https://img.kancloud.cn/f4/a3/f4a3fff9ac847a3985a18c5eea1d872a_798x358.png)
[http://218.6.132.25/aexp/](http://218.6.132.25/aexp/)
![](https://img.kancloud.cn/b6/10/b610c3920ad17fffea1e5989d6978b47_939x509.png)
![](https://img.kancloud.cn/9f/ba/9fba900fe407bd09b943c75ca173a31f_1353x629.png)
## 问题05:实现防止网络监听。
* [ ] 1. 使用二次验证
* [ ] 2. 混入时间令牌(一次一密)
- 1课程概述
- 2环境配置
- 3MVC
- 3.1View
- 3.1.1前端基础
- 3.1.2JSP语法
- 3.1.3JSP内置对象1
- 3.1.4JSP内置对象2
- 3.2Bean
- 3.3Controller
- 3.3.1Servlet
- 3.3.2Filter
- 3.3.3Listener
- 3.4EL&JSTL
- 4三层架构
- 4.1数据库操作
- 4.1.1JDBC
- 4.1.2JDBC优化
- 4.2三层架构设计
- 4.3程序优化
- 4.3.1数据库连接优化
- 4.3.2数据库操作优化
- 4.4安全专题
- 4.4.1Ajax异步查询
- 4.4.2CAPTCHA
- 4.4.3MD5&SHA
- 4.4.4Cookie
- 4.4.5分页显示
- 4.4.6文件上传
- 4.4.7发送邮件
- 5企业级框架
- 5.0Maven
- 5.1MyBatis
- 5.2Spring
- 5.3SpringMVC
- 6实践项目
- 6.1实验1-用户登录(MVC)
- 6.2实验2-访问统计(Servlet高级)
- 6.3实验3-三层架构
- 6.4实验4-安全信息系统