第3章
对称密码算法

3.1 AES 
【实验目的】

通过对AES 算法的C 源程序代码进行修改,了解和掌握分组密码体制的运行原理和
编程思想。

【原理简介】

AES 是1997 年1 月由美国国家标准和技术研究所(NIST)发布公告征集的新一代
数据加密标准,以替代DES 加密算法。其为对称分组密码,分组长度为128b ,密钥长
度支持128b 、192b 、256b 。在最终的评估中,凭借各种平台实现性能的高效性,Vincent 
Rijnmen 和Joan Daemen 提出的Rijndael 算法胜出,最终被国际标准化组织确定为新一代
数据加密标准AES。

有关算法的详细介绍请参阅相关参考书。

【实验环境】

安装Windows 、Linux 操作系统的PC 一台,且其上安装有一种C 语言编译环境。

【实验步骤】

本实验使用的是Rijndael 的作者在《高级加密标准(AES)算法——Rijndael 的设计》

(中文版已由清华大学出版社出版)附录中给出的参考代码。该代码演示了在明文和密钥
均为全0 时,不同分组、不同密钥长度下进行AES 加解密的结果。本实验也可从
https://github.com/libtom/libtomcrypt/blob/master/src/ciphers/aes/aes.c 下载AES 的实现源码。

请读者分析代码,找出各个部分是由哪个函数实现的,并了解函数实现的具体过程。
选取密钥长度和分组长度均为128b ,试修改上述代码,完成以下实验。

(1)全0 密钥扩展验证:对于128b 全零密钥,请利用KeyExpansion 函数将密钥扩
展的结果填入表3-1 中。
表3-1 各轮的扩展密钥

第0 轮00000000000000000000000000000000 第4 轮
第1 轮62636363626363636263636362636363 第9 轮
第2 轮第10 轮
第3 轮


网络安全实实验教程(第3 版)
(2)修改改程序,在表33-2 中填写第1 轮、第2 轮的的中间步骤测试试向量。
LEGEND ––round r = 00 to 10 
Input: cipher inputt
Start: state at thee start of rround[r] 
S_box: state after s_box substtitution 
S_row: state after shift row ttransformatiion 
M_col: state after mix column transformattion 
K_sch: key schedulee value for round[r] 
Output: cipher outpput 
PLAINTEXXT: 3243F6A88885A308D3131198A2E03707334 
KEY: 2B7E151628AED2A6ABF71158809CF4F3CC
ENCRYPT:: 16 byte bllock, 16 bytee key 


表3-2 第1 轮、第第2 轮的中间步骤骤测试向量

R[00].innput 

R[00].kk_sch 

R[01].sstart 

R[01].ss_box 

R[01].ss_row 

R[01].mm_col 

R[01].kk_sch 

R[02].sstart 

R[02].ss_box 

R[02].ss_row 

R[02].mm_col 

R[02].kk_sch 

3243F6A8885A308D3113198A2E03707334 

2B7E1151628AED2A6AABF7158809CF4FF3C 

193DEE3BEA0F4E22B99AC68D2AE9F844808 

(3)修改改该程序,使其其可在(128,128)模式下进进行文件的加解解密,并对某文档进
行加解密,观观察解密后与原原文是否相同。如有不同,试试考虑如何解决决。再用该程程序加密
流媒体文件,观察解密后是是否能够正确完完整播放。
(4)计算算加解密的效率率,并进行一定定的优化使加密密效率提高。
【实验报报告】

(1)简述述AES 算法每个个输入分组的长长度及格式。
(2)简述述AES 算法每轮轮加密过程的4 个步骤。
(3)填写写上面的表格。
【思考题题】

计算加解解密的效率,并并进行一定的优优化使加密效率率提高。

36



第3 章章对称密码算
算法
3.2 
DES 

【实验目目的】

通过对DDES 算法的代码码编写,了解分分组密码算法的的设计思想和分分组密码算法法的工作
模式。

【原理简简介】

DES 是DData Encryptionn Standard(数数据加密标准)的缩写。它是是由IBM 公司研制的
一种加密算法法,美国国家标标准局于19777 年公布把它作作为非机要部门使用的数据加密标
准,四十多年年来,它一直活活跃在国际保密密通信的舞台上上,扮演了十分重要的角色色。DES 
是一个分组加加密算法,分组组长度为64b,密钥长度也为为64b ,但因为含含有8 个奇偶校验比
特,所以实际际密钥长度为556b。DES 算法法是迄今为止使使用最为广泛的加密算法,由于计
算能力的发展展,DES 算法的的密钥长度已经经显得不够安全全了,所以目前前DES 的常见见应用方
式是DES_EDDE2,即三重DDES,采用加密密—解密—加密密三重操作完成加密,其中,加密
操作采用同一一密钥,解密操操作采用另一密密钥,有效密钥钥长度为112bb。

有关算法法的详细介绍请请参阅相关参考考书。

【实验环环境】

安装Winndows 操作系统统的PC 一台,其上安装Vissual C++ 6.0 以以上版本的编译译器。

【实验步步骤】

(1)请读读者从http://ccryptopp.sourceeforge.net/docss/ref521/des_8ccpp-source.htmml 下载
DES 实现的源源代码,并以1112b 全0 密钥钥加密数据ff fff ff ff ff ff ff ff,验证加密结果是否
为35 55 50 b22 15 0e 24 51 。
(2)测试试加密速度和程程序代码长度。
(3)使用用CBC 方式加密密一段64b 自选数据,改变变初始向量值,比较加密结果果。
【实验报报告】

(1)DESS_EDE2 算法程程序实现框图、使用说明和源源程序清单。

(2)算法法加密速度测试试结果
。
(3)CBCC 方式加密运行行结果,并说明明CBC 加密方方式的特点
。
【思考题题】

(1)从加加密速度和代码码长度比较DEES_EDE2 和AES 的算法效率率。
(2)为什什么要使用DES_EDE2 而不使使用密钥不同的两重DES? 
37



网络安全实实验教程(第3 版)
3.3 
SMS4 

【实验目目的】

通过对SMS4 算法的代代码编写,了解解分组密码算法法的设计思想和和工作原理。

【原理简简介】

SMS4 是是一种由国家商商用密码管理办办公室发布应用用于无线局域网产品中的加密算法。
该算法是一个个分组算法。该该算法的分组长长度为128b,密密钥长度为1228b。加密算法法与密钥
扩展算法都采采用32 轮非线性性迭代结构。解解密算法与加密算法的结构构相同,只是轮轮密钥的
使用顺序相反反,解密轮密钥钥是加密轮密钥钥的逆序。

【实验环环境】

安装Winndows 操作系统统的PC 一台,其上安装Vissual C++ 6.0 以以上版本的编译译器。

【实验步步骤】

( 
1 )从http://read.puddn.com/downlooads76/sourceccode/crypt/2870055/sms4/sms44.cpp__. 
htm 参考编写SMS4 算法,并并以密钥01 2 3 45 67 89 ab ccd ef fe dc ba 998 76 54 32 10 加密数
据01 23 45 677 89 ab cd ef fee dc ba 98 76 554 32 10,验证证加密结果是否否为68 1e df 3 4 d2 06 
96 5e 86b3 e99 4f 53 6e42 466。
(2)利用用相同加密密钥钥对一组明文反反复加密1 0000 000 次,密钥钥为01 23 45 667 89 ab 
cd ef fe dc ba 998 76 54 32 100,加密数据为为01 23 45 67 889 ab cd ef fe d c ba 98 76 54 332 10, 
验证测试结果果是否为59 52 98 c7 c6 fd 27 1f 04 02 f8 044 c3 3d 3f 66 。
(3)计算算加解密的效率率,并进行一定定的优化使加密密效率提高。
【实验报报告】

(1)简述述SMS4 加密算算法密钥生成的的步骤及加解密密过程
。
(2)SMSS4 加密算法实实现框图和源程程序清单
。
【思考题题】

(1)分析析SMS4 在密码码结构上与DEES、AES 有何异同。
(2)根据据SMS4 算法,编程研究SMMS4 的S 盒的以以下特性。
① 
明文输输入改变一位,,密文输出平均改变多少位位
? 
② S 盒输输入改变一位,S 盒输出平均均改变多少位?
? 
③ L 输入入改变一位,LL 输出平均改变变多少位?
④ 
对于一一个输入,连续续施加S 盒变变换,变换多少少次时出现输出出等于输入?
(3)我国国公布商用密码码算法有何意义义
? 
38