des算法c++实现文档

des算法c++实现文档

ID:23738147

大小:380.07 KB

页数:34页

时间:2018-11-10

des算法c++实现文档_第1页
des算法c++实现文档_第2页
des算法c++实现文档_第3页
des算法c++实现文档_第4页
des算法c++实现文档_第5页
资源描述:

《des算法c++实现文档》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、高级编程DES加密算法C++程序实现姓名:吴复争学号:201111748专业:电路与系统33一、DES算法简要介绍DES算法为密码体制中的对称密码体制,又被成为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。明文按64位进行分组,密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。DES加密算法特点:分组比较短、密钥太短、密码生命周期短、运算速度较慢。DES工作的基本

2、原理是,其入口参数有三个:key、data、mode。key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解密。实际运用中,密钥只用到了64位中的56位,这样才具有高的安全性。DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位。DES算法具有极高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。而56位长的密钥的穷举空间为256,这意味着如果

3、一台计算机的速度是每一秒种检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间,可见,这是难以实现的,当然,随着科学技术的发展,DES算法加密的明文已经被高速计算机破解,但是DES目前仍然得到广泛的应用,在某些场合仍然发挥余热。33二、C++实现简要介绍2.1密钥生成2.1.1取得密钥从用户处取得一个64位(本文如未特指,均指二进制位))长的密码key,在程序实现中,用一9位字符数组存放用户输入的八个字符,然后将字符数组转换成二进制形式存储在一长度为64的int型数组当中。程序流程图如图表1示。去除64位密码中作为奇偶校验位的第

4、8、16、24、32、40、48、56、64位,剩下的56位作为有效输入密钥。开始用户输入密码keyI<8j<8Key按位和“1”相与Key按位右移一位i++j++结束图表1获取密码并生成16组密钥33程序执行结果如下图表2示:2.1.2等分密钥表15749413325179158504234261810259514335271911360504436表2.6555473931231576254463830221466153453729211352820124把在2.1.1步中生成的56位输入密钥分成均等的A,B两部分,每部分为28位,参

5、照表1和表2把输入密钥的位值33填入相应的位置.按照表1所示A的第一位为输入的64位密钥的第57位,A的第2位为64位密钥的第49位,...,依此类推,A的最后一位是64位密钥的第36位。2.1.4密钥的选取表4.1417112415328156211023191242681672720132415231374755304051453348444939563453464250362932在2.1.3步中第i次迭代生成的两个28位长的密钥为把合并按照表4所示k的第一位为56位密钥的第14位,k的第2位为56位密钥的第17位,...,依此类推

6、,k的最后一位是56位密钥的第32位。生成与进行第i次迭代加密的数据进行按位异或的48位使用密钥:332.1.5迭代DES算法密钥生成需要进行16次迭代,在完成16次迭代前,循环执行1.1.3-1.1.4步.最终形成16套加密密钥:key[0],key[1],key[2],….key[14],key[15].程序流程图如下图表3示,开始i<28否i++分成左右两数组是i<16()()数组内元素移位j++j<28否获取移位步长是i++否是33i<16i++否是j<56否J++左右数组组成一新数组是i<16结束J++i++从新数组抽取48个元

7、素组成新数组j<56否是否是33图3:密钥移位并生成最终与数据加密用的数组程序助兴结果如下图4示,为了节省空间,只输出了16组密钥中的一组。图4:密钥数组key[0]2.2数据的加密操作2.2.1取得数据把明文数据分成64位的数据块,不够64位的数据块以适当的方式补足。为了简单起见,在设计程序时,密文只能输入小于等于8个字符。2.2.2初始换位表5.585042342618102605244362820124625446383022146645648403224168335749413325179159514335271911361534

8、5372921135635547393123157按照表5所示把输入的64位数据的原第58位换到第一位,原第50位换到第二位,...,依此类推,最后的得到新的64位数据.OldDatanewD

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。