des算法c++实现--文档.docx

des算法c++实现--文档.docx

ID:61419159

大小:112.15 KB

页数:34页

时间:2021-01-28

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

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

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

2、为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解密。实际运用中,密钥只用到了64位中的56位,这样才具有高的安全性。DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位。DES算法具有极高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。而56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一秒种检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间,可见,这

3、是难以实现的,当然,随着科学技术的发展,DES算法加密的明文已经被高速计算机破解,但是DES目前仍然得到广泛的应用,在某些场合仍然发挥余热。二、C++实现简要介绍2.1密钥生成2.1.1取得密钥从用户处取得一个64位(本文如未特指,均指二进制位))长的密码key,在程序实现中,用一9位字符数组存放用户输入的八个字符,然后将字符数组转换成二进制形式存储在一长度为64的int型数组当中。程序流程图如图表1示。去除64位密码中作为奇偶校验位的第8、16、24、32、40、48、56、64位,剩下的56位作为有效输入密钥。开始用户输入密码keyI<8j<8Key按位和“1”相与Key

4、按位右移一位i++j++结束图表1获取密码并生成16组密钥程序执行结果如下图表2示:2.1.2等分密钥表15749413325179158504234261810259514335271911360504436表2.6555473931231576254463830221466153453729211352820124把在2.1.1步中生成的56位输入密钥分成均等的A,B两部分,每部分为28位,参照表1和表2把输入密钥的位值填入相应的位置.按照表1所示A的第一位为输入的64位密钥的第57位,A的第2位为64位密钥的第49位,...,依此类推,A的最后一位是64位密钥的第36位

5、。2.1.4密钥的选取表4.1417112415328156211023191242681672720132415231374755304051453348444939563453464250362932在2.1.3步中第i次迭代生成的两个28位长的密钥为把合并按照表4所示k的第一位为56位密钥的第14位,k的第2位为56位密钥的第17位,...,依此类推,k的最后一位是56位密钥的第32位。生成与进行第i次迭代加密的数据进行按位异或的48位使用密钥:2.1.5迭代DES算法密钥生成需要进行16次迭代,在完成16次迭代前,循环执行1.1.3-1.1.4步.最终形成16套加密密

6、钥:key[0],key[1],key[2],….key[14],key[15].程序流程图如下图表3示,开始i<28否i++分成左右两数组是i<16()()数组内元素移位j++j<28否获取移位步长是i++否是i<16i++否是j<56否J++左右数组组成一新数组是i<16结束J++i++从新数组抽取48个元素组成新数组j<56否是否是图3:密钥移位并生成最终与数据加密用的数组程序助兴结果如下图4示,为了节省空间,只输出了16组密钥中的一组。图4:密钥数组key[0]2.2数据的加密操作2.2.1取得数据把明文数据分成64位的数据块,不够64位的数据块以适当的方式补足。为了

7、简单起见,在设计程序时,密文只能输入小于等于8个字符。2.2.2初始换位表5.58504234261810260524436282012462544638302214664564840322416857494133251791595143352719113615345372921135635547393123157按照表5所示把输入的64位数据的原第58位换到第一位,原第50位换到第二位,...,依此类推,最后的得到新的64位数据.OldDatanewData2.2.3数据扩展表6.第一次迭代以2.2.

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

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

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