资源描述
密码学学习心得
现代密码学小论文
姓名:肖宽学号:p111813618
专业:11级电子信息工程二班
指导教师:李娟
1
数据的des加密算法
摘要:
密码学是研究如何隐密地传递信息的学科。在现代特别指对信息以及其传输的数学性研究,常被认为是数学和计算机科学的分支,和信息论也密切相关。著名的密码学者ronrivest解释道:“密码学是关于如何在敌人存在的环境中通讯,自工程学角度,这相当于密码学与纯数学的异同。密码学是信息安全等相关议题,如认证,访问控制的核心。密码学的首要目的是隐藏信息的涵义,并不是隐藏信息的存在。密码学也是促进计算机科学,特别是在于电脑与网络安全所使用的技术,如访问控制与信息的机密性。密码学已经被应用在日常生活:包括自动柜员机的芯片卡,电脑使用者存取密码,电子商务等等。本文以des数据加密算法为例,演示如何使用cX中的加密包进行des算法加密,
关键词:加密对称非对称des密钥明文
20世纪70年代,主机时代的信息安全是面向单机的,由于早期的用户主要是军方,信息安全的主要内容是保密,20世纪80年代,微机和局域网的兴起带来了信息在微机间的传输和用户间的共享问题,丰富了信息安全的内函,使人们认识到数据完整性,可用性的重要性。安全服务,安全机制等基本框架成为信息安全的重要内容。20世纪90年代,因特网爆炸性的发展把人类带进了一个新生的生存空间。因特网具有高度分布,边界模糊,层次欠清,动态演化,而用户又在其中扮演主角的特点,如何处理好这一复杂而又巨大的系统的安全,成为信息安全的主要问题。21世纪是信息时代,信息已经成为社会发展的重要战略资源,社会的信息已经成为当今世界发展的潮流和核心,而信息安全在信息社会中2将扮演极为重要的角色,它会直接关系到国家安全,企业经营和人们的日常生活。
信息安全可分为系统安全,数据安全和内容安全三个层次,是一个综合,交叉的学科领域,要利用数学,电子,信息,通信,计算机等诸多学科的长期知识积累和最新发展成果。随着信息安全的快速发展,全球对信息安全人才的需求不断增加,但我国起步较晚,目前信息安全人才极度匮乏,远远不能满足金融,商业,公共安全,国防军事和政府等部门的需求。要解决供需矛盾,必须加快信息安全人才的培养,以满足社会对信息安全人才的需求。而我作为一名21世纪的大学生,有机会学到了密码学这门课,从这门课中,我学到了很多有用的知识,让自己受益匪浅。
经过半学期的学习,我了解了密码学的大致内容,掌握了密码学的基础知识,密码学主要有以下章节:
1密码学概述2流密码3分组密码体制4公钥密码
5密钥分配与密钥管理
按照密钥方式划分,可分为对称加密算法和非对称加密算法。
一、对称加密算法
对称加密算法有时又叫做传统密码算法,加密密钥可以从解密密钥中推导出来,解密密钥也可以从加密密钥中推导出来。在大多数的对称算法中加密密钥和解密密钥是相同的,因此也成为秘密密钥算法或者单密钥算法。它要求发送发和接收方在安全通信之前先商定一个密钥。对称算法的安全性依赖于密钥.所以密钥的保密性对通信至关重要。对称加密算法主要有分组加密和流加密两类。分3组加密是指将明文分成固定商都的组,用同一密钥分别对每一组加密.输出固定长度的密文典型代表:des。
二、非对称加密算法
非对称加密算法有时又叫做公开密钥算法。其中用到两个密钥。一个是公共的。一个事私有的。一个密钥用于加密,另一个密钥用于解密。两个密钥不能够互相推导。常用的非对称加密算法有rsa公钥算法、diffie-heliman算法和ecc椭圆曲线密码。
以下具体介绍des算法:
我们详细分析一下des加密算法的处理过程。des加密算法是分组加密算法.明文以64位为单位分成块。64位数据在64位密钥的控制下.经过初始变换后进行16轮加密迭代:64位数据被分成左右两半部分.每部分32位,密钥与右半部分相结合.然后再与左半部分相结合.结果作为新的右半部分:结合前的右半部分作为新的左半部分。这一系列步骤组成一轮。这种轮换要重复16次。最后一轮之后,再进行初始置换的逆置换,就得到了64位的密文。des的加密过程可分为加密处理.加密变换和子密钥生成几个部分组成。
1.加密处理过程
(1)初始变换。加密处理首先要对64位的明文按表1所示的初始换位表ip进行变换。表中的数值表示输入位被置换后的新位置。例如输入的第58位,在输出的时候被置换到第1位;输入的是第7位,在输出时被置换到第64位。
(2)加密处理。上述换位处理的输出,中间要经过16轮加密变换。初始换位的64位的输出作为下一次的输入,将64位分为左、右两个32位,分别记为lo和ro从l0、ro到l1
6、r16,共进行16轮加密变换。其中,经过n轮处理后的点左右432位分别为ln和rn.则可做如下定义:ln=rn-1rn=ln一1其中.kn是向第n轮输入的48位的子密钥,ln-1和rn-1分别是第n-1轮的输出f是mangler函数。(3)最后换位。进行16轮的加密变换之后,将l16和r16合成64位的数据.再按照表2所示的最后换位表进行ip一1的换位得到64位的密文这就是des算法加密的结果。
2.加密变换过程
通过重复某些位将32位的右半部分按照扩展表3扩展换位表扩展为48位.而56位的密钥先移位然后通过选择其中的某些位减少至48位.48位的右半部分通过异或操作和48位的密钥结合.并分成6位的8个分组.通过8个s一盒将这48位替代成新的32位数据,再将其置换一次。这些s一盒输入6位,输出4位。
3.子密钥产生过程
钥通常表示为64位自然数,首先通过压缩换位,去掉每个字节的第八位,用作奇偶校验,因此,密钥去掉8,16,24,…..减至56位,所以实际密钥长度为56位,而每轮要生成48位的子密钥。输入的64位密钥,首先通过减压换位得到56位的密钥,每层分成两部分,上部分28位为c0,下部分为d0。c0和d0依次进行循环左移操作生成c1和d1,将c1和d1合成56位,再通过压缩换位pc-2输出48位的子密钥k1,再将将c1和d1进行循环左移和pc-2压缩位,得到子密钥k2….以此类推,得到16个子密钥。
4.解密处理过程
从密文到明文的解密过程可采用与加密完全相同的算法。不过解密要用加密的逆变换.就是把上面的最后换位表和初始换位表完全倒过来变换。。
使用以下实例演示了如何使用cX中的加密包进行des算法加密。
5des_democs代码如下:usingsystem;
usingsystem.security.cryptography;usingsystem.io;usingsystem.text;publicclassencryptsngdes{pubiicstaticvoidmain(stringargs){if(argslength”args[0]);return.}utf8encodingutf8encoding=newutf8encoding:
byteinputbytearray=utf8encodinggetbytes(args[0].tochararray):desdes=descreate:
bytekey={0x01,0x23,0x45,0x67,0x89,0xab,0xcdoxef};byteiv={0x12,0x34,0x56,0x78,0x90,0xab,oxcd,oxef};des.key=key;des.lv=1v;symmetricstreamencryptorsse=des.createencryptor;cryptomemorystreamcms=newcryptomemorystream;sse.setsink(cms);sse.write(inputbytearray);sse.closestream;6byte[1]encrypteddata=cms.data;consolewdteline(”加密结果:”);for(inti=0;i
第6页 共6页
展开阅读全文