DES加密系统
2016-03-11 23:11
197 查看
1实验名称
DES密码系统算法实现2实验目的
Ø 理解对称加密算法的原理和特点Ø 理解DES算法的加密原理
Ø 了解并掌握DES密码系统密钥产生过程和DES加解密流程。
Ø 实现DES密码系统加解密。
3实验原理
DES的设计原理是以Shannon所提出的乘法加密系统为主。举例来说:现有两套加密系统A与B,明文首先利用加密系统A进行加密而得一个密文,再将此密文作为加密系统B的输入,最后真正的密文即为加密系统B所输出的密文。通过两个加密系统“相乘”的结果能够大幅度提高其安全性。DES系统将64位的数据利用56位的密匙加密,整个设计原则起源于Shannon的乘法保密系统两大观念:扩散与混淆。扩散的主要目的是尽可能使明文结构分布到较长的密文上,以使解密者不能利用统计方法如愿以偿。
4实验内容
4.1DES回合密钥的产生
由于DES的加密及解密过程都需要做16个回合的运算,每一个回合的运算都需要使用一把回合密钥,所以DES的加解密过程共需要16把回合密钥,回合密钥的产生方式如图4-4所示,它是由一把56位的秘密密钥经过一连串的运算所得到的。图4-1 DES的密钥产生运算过程
DES回合密钥的产生步骤如下:
(1)先把此56位的密钥扩展到64位,其扩展方式为每7位插入一个奇偶校验位,使得1的个数有奇数个。
(2)将上一步骤所得的64位密钥重新排列,其排列规则如表4-1所示。
表4-1 密钥排列表
再将重新排列后的56位密钥分成KL和KR两部分,KL和KR各占28位。KL包含第1位到第28位,KR则包含第29位到第56位。
(3)分别对KL和KR做向左循环位移,其位移的位数与回合数有关,如表4-2所示。
表4-2 左移位数表
移位后的KL和KR被当作下一个回合的输入。
(4)将移位后的KL和KR重组后,再做缩减排列,其排列规则如表4-3所示。
表4-3 缩减排列表
重排列后的值由56位被缩减至48位,而这48位的值也就是该回合的回合密钥。
重复步骤(3)和(4),直到16把回合密钥-K1、K2、...、K16都产生出来为止。
4.2DES加密流程
DES加密的过程如图4-2所示,一共要执行16个回合的运算,每一回合运算均需使用上节所产生的回合密钥。图4-2 DES加密过程
(1)先将信息明文以8字母(64位)位单位来做加密处理,将输入的64位信息以表4-4所示的规则做重新排列。
表4-4 初始排列表
重组后再将其结果分成L和R两部分,L和R各占32位。
(2)将L和R分别依下列函数运算:
其中,符号为异或运算,位48位的第j回合密钥。
(3)函数的运算过程可参考图4-3,说明如下:
图4-3DES的f函数的运算过程
① 先将32位的做位扩充至48位,其扩充规则如表4-5所示。
表4-5 扩增排列表
② 将此扩充后的48位数据与48位回合密钥做异或运算。
③ 将做完异或运算的48位数据分成8个快(S-BOX),每个S-BOX内有6位,分别为。
④ 将每个S-BOX内的6位数据按照表4-6所示的规则转换,每个S-BOX都有专属的转换规则,经转换后会产生4位输出结果。表4-6的使用方法如下:
a. 将每个S-BOX内的位取出,当成S-BOX的行索引值。
b. 将每个S-BOX内的位取出,当成S-BOX的列索引值。
c. 利用行与列的索引值在所属的S-BOX中找出所对应的值。
d. 将所找到的对应值转换成二进制表示法后,取代原来S-BOX内的6位值。
表4-6 DES的S-BOX(1-5)
⑤ 将每个S-BOX所输出的4个位合并后,共有32位输出,再将此32位的输出经表4-7(P-BOX)所示重新排列后,即完成一个函数的运算。
表4-7 P-BOX排列表
(4)将步骤(2)重复执行16次后,再将最后的合并成一个64位输出。最后将此64位数据按照表4-8做最后的排列重组,所得的结果即为密文。
表4-8 最后排列表
4.3DES解密流程
DES的解密过程与加密过程类似,解密的流程如图4-10所示,可以发现解密流程与加密流程唯一的差别是将图4-4 DES解密过程
相关文章推荐
- Hexo + Github Pages静态博客搭建简明教程
- CefSharp V43 版本ToolTip功能和工程文件.csproj神秘关系(摸索很久)
- 如何学好算法和数据结构之我见——51CTO名家访谈实录
- 图像bayer格式介绍以及bayer插值原理CFA
- hive 操作(四)
- 数据库启动的三个台阶nomount,mount,open
- 什么叫作HA集群
- 使用Xcode7的Instruments检测解决iOS内存泄露
- goldengate ogg的拆分和合并
- 处理i磁带读写过多导致的job abend问题
- 第三方SDK:JPush SDK Eclipse
- Linux平台weblogic集群安装(二)
- 《大话数据结构》学习记录1--第1,2章和第3章的顺序线性表
- 跟踪分析Linux内核的启动过程
- open failed: EACCES (Permission denied)
- 从pid转换至task_struct
- 在linux系统下 第二个ide通道的硬盘被标识为什么?
- 关于shell局部变量和全局变量
- 递归调用
- 【POJ3195】Candies(差分约束系统)