《(网络空间安全技术实践)6.5sms4密码算法编程实验》由会员分享,可在线阅读,更多相关《(网络空间安全技术实践)6.5sms4密码算法编程实验(10页珍藏版)》请在金锄头文库上搜索。
1、6.5 SMS4密码算法编程实验,实验目的: 掌握SMS4密码加解密原理,并利用Visual C+编程实现。 实验内容: 编程实现字符串”Hi, this is SMS4!”的加密,并且解密验证之。,网络空间安全实践教程,1,6.5 SMS4密码算法编程实验,实验原理: 明文分组:128bit 密钥:128bit 密文分组:128bit 加解密: 使用32轮非平衡Feistel结构,网络空间安全实践教程,2,6.5 SMS4密码算法编程实验,实验原理: 密钥扩展 输入128位密钥,扩展成32轮的轮密钥K1, K2,K32,轮密钥长度均为32位 轮变换函数T 每一轮核心运算,输入32位, 输出3
2、2位 加解密 输入明文128位,分成四部分 ,实施32次轮变换,得到 ,在进行逆序处理得到密文,网络空间安全实践教程,3,6.5 SMS4密码算法编程实验,实验原理: 密钥扩展: 输入初始密钥128位,输出32轮子密钥RK0,RK31。 初始密钥128位分成四部分 ,再根据系统参数 与固定参数 ,作密钥扩展 生成所有的RKi。 置换T由非线性变换S盒和变换L复合而成, 。,网络空间安全实践教程,4,6.5 SMS4密码算法编程实验,实验原理: 轮变换: 变换规则如下: 即每轮变换为 其中置换T由非线性变换S盒和变换L复合而成,,网络空间安全实践教程,5,6.5 SMS4密码算法编程实验,实验要
3、点说明: SMS4密码中的基本数据单元是32位,可使用无符号整型变量(unsigned int,占4字节)来表示。 进一步,可用长度为4的无符号整型数组表示128位的明文分组、密文分组与密钥。,网络空间安全实践教程,6,6.5 SMS4密码算法编程实验,实验准备: Windows 操作系统 Visual Studio 2010以上开发环境,网络空间安全实践教程,7,6.5 SMS4密码算法编程实验,实验步骤: 利用Visual C+开发环境,构建类似右图的 SMS4密码加解密界面。 编写加密按钮事件:从明文框中读入 字符序列,从密钥框中读入16字节(128bit) 密钥,对明文进行分组加密运算, 并在密文框中输出。 编写解密按钮事件:从密文框中读入字符 序列,从密钥框中读入密钥,对密文进行 分组解密运算,并在解密的明文框中输出。,网络空间安全实践教程,8,6.5 SMS4密码算法编程实验,实验结果要求: 根据参考函数功能编写SMS4加密和解密,给出关键编程思路。 总结实验过程中遇到的问题和经验。,网络空间安全实践教程,9,6.5 SMS4密码算法编程实验,实验视频:,网络空间安全实践教程,10,