- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DES算法的设计与实现.ppt
DES密码算法设计与实现 指导老师:陈心浩 张向明 E-MAIL:zhangxmhb@ QQ: 664624331 DES介绍 DES密码 Data Encryption Standard的缩写。DES算法是一种数据加密算法。自从1977年公布以来,一直是国际上的商用保密通信和计算机通信的最常用的加密标准。DES密码主要运用迭代移位以及置换等操作达到加/解密的目的 DES是一种分组密码,它针对64位明文串进行操作,密钥长度为64位,根据初始密钥产生16个轮密钥(子密钥,48位长)。 信息码分块处理 对信息码的操作须以二进制来处理 对长度不足64位的处理 1、计算信息码的字节数 lb; 2、判断lb能否被8整除,如否则:计算在已转换为二进制 的信息码后添加2*(lb除以8的余数)个二进制“0”; 3、在二进制信息码后添加64位的信息码字节数二进制数 位。 E扩展表 轮密钥算法步骤 (见图6) 1、置换1处理(Permuted Choice-1,图7) 并分成左、右二块Cn、Dn,各32bits; 2、循环左移处理 3、置换2处理(Permuted Choice-2,图8) 4、重复2-3步进行16轮,生成16个子密钥 循环左移算法 每一轮密钥生成前,将左、右二子块分别循环左移图9中右列对应的位数 然后将循环左移后的二块合并即为当轮子密钥。 Inverse Initial Permutation 以上矩阵列表元素,可采用数组存储。 初始化方式,可采用为数组赋初值方式,亦可根据其位置特征编程处理。 f函数P置换表 课程任务 第5周布置任务,6-9周完成系统设计及编程和测试,第10周完成技术设计报告。 第11周交以下资料: 1、电子版的设计报告书、程序源代码、数据库。 2、纸质设计技术报告书。 (注意:程序源码、技术设计报告不得雷同) * 《软件课程设计》 开发环境 开发工具 DELPHI 7.0 或C++BUILDER 或VC++ 64位信息块(二进制) 图1 算法设计步骤 对字符串加密功能 (见图1) 1、分块处理 对信息码(明码)进行分块,使每块长度为64位二进制位 。 2、初始置换处理 对每个块进行矩阵置换(Initial Permutation变换, 见图2)。 并将置换后的64位块分成长度为32位的左右二块:L0、R0。 3、对右块 Rn 与轮密钥 Kn 执行 f 函数变换(见图3) ; 4、对执行 f 函数变换后的32位数与32位的左块 Ln 执行 XOR 操作; 5、将结果赋给左块 Rn+1 , 将原右块值赋给 Ln+1 ; 6、重复3-5步,直至第16个轮密钥计算完毕; 7、最后执行矩阵逆置换 (IP-1,见图12),得到密文。 INITIAL PERMUTATION 以上矩阵列表元素,可采用数组存储。 初始化方式,可采用为数组赋初值方式,亦可根据其位置特征编程处理。 图2 初始置换表 f 函数算法设计 f函数算法步骤 (见图3) 1、E扩展处理 利用E扩展矩阵表(见图4),对32位右半块 Rn 进行位扩展成48bits。 2、异或处理 将扩展后的 Rn 与轮密钥 Kn 进行异或操作变换。 3、S-BOX处理 将变换的数进行S-BOX处理; S盒子有8个(见图10、图11); (1)先将48位数分成8小块,每块6bits; (2)每小块对应一个S盒子,经过变换后变为4位; 8个S盒子处理完毕后,变为8*4=32bits; 4、最后执行 P 置换 (P表见附图13),得到32位数据。 图3 f 函数算法设计 图4 E扩展表 S盒子算法设计 S盒子算法步骤 1、将6bits小块的第1、6位构成一个十进制数 i; 2、将其中间4bits构成一个十进制数 j; 3、在S盒子中以 i 为行,以 j 为列查找得到一个十进制数。 4、将这个十进制数以4bits二进制数输出,即为结果(见图5)。 图5 S盒子输出(6进4出) 图6 轮密钥生成算法 图7 图8 图9 图10 图11 图12 图13 算法设计步骤 对字符串解密功能 1、功能与串加密步骤相同。 2、
文档评论(0)