[TOC]
## 文獻:GBT 38674-2020信息安全技術 應用軟件安全編程指南

## 問題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對用戶信息進行加密。

```
//對密碼進行加密
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)

[http://218.6.132.25/aexp/](http://218.6.132.25/aexp/)


## 問題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-安全信息系統