ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:361.97KB ,
资源ID:75883      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/75883.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(des加密算法的实现及应用.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

des加密算法的实现及应用.docx

1、 DES加密算法的实现及应用 DES加密算法的实现及应用学生姓名:梁帅 指导老师:熊兵 摘 要 随着信息与通信技术的迅猛发展和广泛应用,人们通过互联网进行信息交流,难免涉及到密码保护问题,这就需要使用DES加密技术来对数据进行加密保护。本课程设计介绍了DES加密的基本原理以及简单的实现方法。本课程设计基于C语言,采用DES算法技术,设计了DES加密程序,实现了DES加密解密功能。经测试,程序能正常运行,实现了设计目标。关键词 DES加密,C语言,信息交流1 引 言1.1本文主要内容DES是一个分组密码算法,使用64位密钥(除去8位奇偶校验,实际密钥长度为56位)对64比特的数据分组(二进制数据

2、)加密,产生64位密文数据。DES是一个对称密码体制,加密和解密使用同意密钥,解密和加密使用同一算法(这样,在硬件与软件设计时有利于加密单元的重用)。DES的所有的保密性均依赖于密钥。DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。DES算法是这样工作的:如Mode为加密,则用Key去把数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Dat

3、a的明码形式(64位)作为DES的输出结果。在通信网络的两端,双方约定一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式在公共通信网(如电话网)中传输到通信网络的终点,数据到达目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样,便保证了核心数据(如PIN、MAC等)在公共通信网中传输的安全性和可靠性DES的加密过程:第一阶段:初始置换IP。在第一轮迭代之前,需要加密的64位明文首先通过初始置换IP的作用,对输入分组实施置换。最后,按照置换顺序,DES将64位的置换结果分为左右两部分,第1位到第32位记为L0,第33位到第64位记为R0。第二阶段

4、:16次迭代变换。DES采用了典型的Feistel结构,是一个乘积结构的迭代密码算法。其算法的核心是算法所规定的16次迭代变换。DES算法的16才迭代变换具有相同的结构,每一次迭代变换都以前一次迭代变换的结果和用户密钥扩展得到的子密钥Ki作为输入;每一次迭代变换只变换了一半数据,它们将输入数据的右半部分经过函数f后将其输出,与输入数据的左半部分进行异或运算,并将得到的结果作为新的有半部分,原来的有半部分变成了新的左半部分。用下面的规则来表示这一过程(假设第i次迭代所得到的结果为LiRi):Li=Ri-1;Ri=Li-1f(Ri-1,Ki);在最后一轮左与右半部分并未变换,而是直接将R16L16

5、并在一起作为未置换的输入。第三阶段:逆(初始)置换。他是初始置换IP的逆置换,记为IP-1。在对16次迭代的结果(R16L16)再使用逆置换IP-1后得到的结果即可作为DES加密的密文Y输出,即Y=IP-1(R16L16)。DES解密过程:DES的解密算法与其加密算法使用的算法过程相同。两者的不同之处在于解密时子密钥Ki的使用顺序与加密时相反,如果子密钥为K1K2K16,那么解密时子密钥的使用顺序为K16K15K1,即使用DES解密算法进行解密时,将以64位密文作为输入,第1次迭代运算使用子密钥K16,第2次迭代运算使用子密钥K15,第16次迭代使用子密钥K1,其它的运算与加密算法相同。这样,

6、最后输出的是64位明文。对数据进行加密传输能有效地保证数据的机密性,DES是一个保证数据机密性的经典算法,本次课程设计将基于C语言简单实现DES加密解密算法本文第二节介绍了DES算法的实现原理,第三节详细描述了DES加密算法的设计步骤,第四节为结束语。1.2设计平台笔记本,windows7 64bit操作系统,Microsoft Visual C+6.0,C语言。2 设计原理2.1对称密码算法简介对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数的对称算法中,加密密钥和解密密

7、钥是相同的,所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信性至关重要.对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。不足之处是,交易双方都使用同样钥匙,安全性得不到保证。此外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量呈几何级数增长,密钥管理成为用户的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。而与公开密钥加密算法比起来

8、,对称加密算法能够提供加密和认证却缺乏了签名功能,使得使用范围有所缩小.在计算机专网系统中广泛使用的对称加密算法有DES和IDEA等。2.2 DES算法基本原理DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是56位,其算法主要分为两步2:1)初始置换其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,其置换规则为将输入的第58位换到第一位,第50位换到第2位依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位,例:设置换前的输入值为D1D2D3D64,则经过初始置换后的结果为:L0

9、=D58D50D8;R0=D57D49D7。2)逆置换经过16次迭代运算后,得到L16、R16,将此作为输入,进行逆置换,逆置换正好是初始置换的逆运算,由此即得到密文输出。如图3.1.1。图2.2.1 DES算法流程图从子密钥Ki的生成算法描述图中我们可以看到:初始Key值为64位,但DES算法规定,其中第8、16、.64位是奇偶校验位,不参与DES运算。故Key 实际可用位数便只有56位。即:经过缩小选择换位表1的变换后,Key 的位数由64 位变成了56位,此56位分为C0、D0两部分,各28位,然后分别进行第1次循环左移,得到C1、D1,将C1(28位)、D1(28位)合并得到56位,再

10、经过缩小选择换位2,从而便得到了密钥K0(48位)。依此类推,便可得到K1、K2、.、K15,不过需要注意的是,16次循环左移对应的左移位数要依据下述规则进行:循环左移位数 1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1图2.2.2子密钥生成图2.3 DES算法相关知识现如今,依靠Internet的分布式计算能力,用穷举密钥搜索攻击方法破译已成为可能。数据加密标准DES已经达到它的信任终点。但是作为一种Feistel加密算法的例子仍然有讨论的价值。DES是对二元数字分组加密的分组密码算法,分组长度为64比特。每64位明文加密成64位密文,没有数据压缩和扩展,密钥长度为56比特,

11、若输入64比特,则第8,16,24,32,40,48,56,64为奇偶校验位,所以,实际密钥只有56位。DES算法完全公开,其保密性完全依赖密钥。DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,其置换规则见下表:58501234261810260524436282012462544638302214664564840322416857494133251791595143352719113615345372921135635547393123157即将输入的第58位换到第一位

12、,第50位换到第2位,依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位,例:设置换前的输入值为D1D2D3D64,则经过初始置换后的结果为:L0=D550D8;R0=D57D49.D7。经过26次迭代运算后,得到L16、R16,将此作为输入,进行逆置换,即得到密文输出。逆置换正好是初始置的逆运算,例如,第1位经过初始置换后,处于第40位,而通过逆置换,又将第40位换回到第1位,其逆置换规则如下表所示:4084816562464323974715552363313864614542262303754513532161293644412522

13、0602835343115119592734242105018582633141949175725放大换位表3212345456789891011121312131415161716171819202120212223242524252627282828293031321单纯换位表1672021291228171152326518311028241432273919133062211425在f(Ri,Ki)算法描述图中,S1,S2.S8为选择函数,其功能是把6bit数据变为4bit数据。下面给出选择函数Si(i=1,2.8)的功能表:选择函数SiS1:1441312151183106125907015741421311061211953841148136211151297310501512824917511314100613S2:151814611349721312051031347152814120110691150147111041315812

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1