DES加密算法分析(3)
陕西理工学院毕业论文(设计)
这个函数整个算法运行程序的最主要部分。这个函数用于加密还是解密取决于type的类型,如果type为encrypt,则进行加密;如果type的类型为decrypt,则进行解密。 void des_run(char out[8],char in[8], bool type) {
static bool m[64],tmp[32],*li=&m[0], *ri=&m[32]; bytetobit(m,in,64);
transform(m,m,ip_table,64); if(type==encrypt){
for(int i=0;i<16;i++){ memcpy(tmp,ri,32); f_func(ri,subkey[i]); xor(ri,li,32);
memcpy(li,tmp,32); }
}else{
for(int i=15;i>=0;i--){ memcpy(tmp,li,32); f_func(li,subkey[i]); xor(li,ri,32);
memcpy(ri,tmp,32); }
}
transform(m,m,ipr_table,64); bittobyte(out,m,64); }
这个函数用到以下函数: (1) bytetobit()
此函数的功能是将输入的字节组转换为位组。 (2) transform()
此函数是通用置换函数,根据具体情况确定要执行哪种置换。 (3) memcpy()
此函数是库函数,主要作用是进行内存单元的复制。 (4) f_func()
此函数是des_run()函数运行的关键,是将32比特的输入转化为32比特的输出 (5)xor()
此函数的功能是进行异或运算,异或运算是按位作不进位加法运算。 (6)bittobyte()
此函数的功能是将位组转换字节组。
3.4 DES算法的主函数void main()
主函数的流程: void main() {
char key[8]={'p','r','o','g','r','a','m'},str[8];
puts(\ printf(\
第11页共21页
陕西理工学院毕业论文(设计)
printf(\
puts(\ gets(str); printf(\
puts(\ des_setkey(key);
des_run(str,str,encrypt); puts(\ puts(str); printf(\
puts(\ puts(\ des_run(str,str,decrypt); puts(str); printf(\
puts(\ printf(\
}
此函数贯穿整个函数。首先是初设密钥,然后调用密钥设置函数des_setkey()和DES算法的运行函数des_run(),最后得出密文以及解密后的文字。
3.5 DES的加密过程和举例
设明文m=computer,密钥k为program,它们用ASCII码表示为: m= 01100011 01101111 01101101 01110000 01110101 01110100 01100101 01110010 k= 01110000 01110010 01101111 01100111 01110010 01101101 01101101
这里的k只有56位,由于第8,16,24,32,40,48,58,64位不起作用,所以没有赋值。也就是其中的k8 k16 k24 k32 k40 k48 k56 k64不起作用。其中的密钥为64比特如下:
k=0111000*0011100*1001101*1110110* 0111011*1001001*1000010*1101101*
在这里密钥K是在主函数中已设定,所以在程序运行时只输入明文就可以了。 密钥k经过PC-1置换后,分成两组C0,D0。可得 C0=11101100 10011001 00011011 1011 D0=10110100 01011000 10001110 0111
C0,D0 分别进行循环左移运算,得到C1,D1。 C1=11011001 00110010 00110111 0111 D1=01101000 10110001 00011100 1111
依次类推,C1,D1继续进行循环左移,最后得到C2,D2进行循环左移,得到C3,D3??C16,D16。
C1,D1进行PC-2置换,得到密钥k1,可得:
K1=00111101 10001111 11001101 00110111 00111111 01001000
依次类推,C2,D2进行PC-2置换,得到密钥k2, C3,D3进行PC-2置换得到k3,??C16,D16进行PC-2置换得到k16。
明文M进行IP置换后,分成两组:L0,R0,可得: L0=11111111 10111000 01110110 01010111
第12页共21页
陕西理工学院毕业论文(设计)
R0=00000000 11111111 00000110 10000011
R0进行E膨胀后,与密钥k1进行异或运算,得到48比特的数据 S=10111101 10011000 00110011 10110111 11101011 01001110 将这些数据分别装入S盒:
(1) 101111进入S1,从S1的第3行第7列的元素7,可知其输出为0111 (2) 011001进入S2,从S2的第1行第12列的元6,可知其输出为0110 (3) 100000进入S3,从S3的第2行第0列的元素13,可知其输出为1101 (4) 110011进入S4,从S4的第3行第9列的元素4,可知其输出为0100 (5) 101101进入S5,从S5的第3行第6列的元素2,可知其输出为0010 (6) 111110进入S6,从S6的第2行第15列的元素6,可知其输出为0100 (7) 101101进入S7,从S7的第3行第6列的元素10,可知其输出为1010 (8) 001110进入S8,从S8的第0行第7列的元素1,可知其输出为0001 故8个S盒的输出为:
01110110 11010100 00100110 10100001 最后通过P得f(R0,k1)为:
01110110 11010100 00100110 10100001 L0 f(R0,k1)得到R1:
R1=10111011 10011001 11101001 11001100
L1= R0=00000000 11111111 00000110 10000011 经过16轮的迭代最后得到:
L16= R15=01010010 10011000 11000001 01011010 R16=11101000 10000011 01111000 01001100 最后经过IP逆置换后得到密文如下:
00100100 01100001 00000010 10011011 01011001 10001000 11001111 10110100
程序解密过程(略) 3.6 DES算法的分析
DES算法具有极高安全性,最初,除了用穷举搜索法对DES算法进行攻击外,并没有发现更有效的办法。而56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一秒种检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间,可见,这是难以实现的,当然,随着科学技术的发展,当出现超高速计算机后,我们可考虑把DES密钥的长度再增长一些,以此来达到更高的保密程度[4]。
在DES算法作为一个标准时,曾出现过许多的批评,其中之一就是针对S盒的。DES里的所有计算,除去S盒全是线性的,也就是说,计算两个输出的异或与先将两个对应输入异或再计算其输出是相同的。作为非线性部件,S盒针对密码体制的安全性至关重要。在算法提出时,就有人怀疑S盒隐藏了“陷门”。而美国国家安全局能够轻易的解密消息,同时还能宣称DES算法是“安全”的。当然无法否认这 …… 此处隐藏:4192字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [综合文档]应答器设备技术规范(征求意见稿)A1
- [综合文档]教师 2012年高考政治试题按考点分类汇
- [综合文档]保险公司的总经理助理竞职演说
- [综合文档]卫生应急大练兵大比武活动考试--题库(
- [综合文档]徐州经济技术开发区总体规划环境影响报
- [综合文档]汉语拼音表(带声调)
- [综合文档]二年级 上 思维训练( 1~18)
- [综合文档]特色学校五年发展规划
- [综合文档]机床经常出现报警“X1轴定位监控”
- [综合文档]《电子技术基础》21.§5—2、3、4 习题
- [综合文档]浙江省深化普通高中课程改革
- [综合文档]CRISP原理 - 图文
- [综合文档]2017年电大社会调查研究与方法形考答案
- [综合文档]浅析建筑施工安全毕业论文
- [综合文档]《回忆我的母亲》名师教案
- [综合文档]装饰装修工程监理规划
- [综合文档]三下乡心得体会-文艺
- [综合文档]柱计算长度系数 - 图文
- [综合文档]全流程思考,提高燃电系统热电转换率--
- [综合文档]2018年嘉定区中考物理一模含答案
- 433M车库门滚动码遥控器
- 8、架空线路施工规范
- 大学四年声乐学习的体会
- 新北师大版五年级数学上册《轴对称再认
- 部编版五年级上册语文第六单元小结复习
- 小学六年级英语形容词用法
- 第2课 抗美援朝保家卫国 课件01(岳麓版
- 2015年天津大学运筹学基础考研真题,考
- 微机计算机控制技术课后于海生(第2版)
- 安全教育实践活动
- Delphi程序设计教程_第1章_Delphi概述
- 第八讲 工业革命与启蒙运动
- 《中华人民共和国药典》2005年版二部勘
- 科粤版九年级化学2.3构成物质的微粒(1)
- 西师大版数学三年级下册《长方形、正方
- ch6_冒泡排序演示
- 第4章 冲裁模具设计
- 浙江中小民营企业员工流失论文[终稿]
- 再议有线数字电视市场营运模式
- 昆明供水工程监理大纲




