DES加解密算法的实现
一、DES算法的概述
DES(Data Encryption Standard)是由美国IBM公司于20世纪70年代中期的一个密码算(LUCIFER)发展而来,在1977年1月15日,美国国家标准局正式公布实施,并得到了ISO的认可,在过去的20多年时间里,DES被广泛应用于美国联邦和各种商业信息的保密工作中,经受住了各种密码分析和攻击,有很好的安全性。然而,目前DES算法已经被更为安全的Rijndael算法取代,但是DES加密算法还没有被彻底的破解掉,仍是目前使用最为普遍的对称密码算法。所以对DES的研究还有很大价值,在国内DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域被广泛应用,以此来实现关键的数据保密,如信用卡持卡人的PIN码加密传输,IC卡与POS机之间的双向认证、金融交易数据包的MAC校验等,均用到DES算法。
DES算法是一种采用传统的代替和置换操作加密的分组密码,明文以64比特为分组,密钥长度为64比特,有效密钥长度是56比特,其中加密密钥有8比特是奇偶校验,DES的加密和解密用的是同一算法,它的安全性依赖于所用的密钥。它首先把需要加密的明文划分为每64比特的二进制的数据块,用56比特有效密钥对64比特二进制数据块进行加密,每次加密可对64比特的明文输入进行16轮的替换和移位后,输出完全不同的64比特密文数据。由于DES算法仅使用最大为64比特的标准算法和逻辑运算,运算速度快,密
钥容易产生,适合于在大多数计算机上用软件快速实现,同样也适合于在专用芯片上实现。 二、DES算法描述
DES算法的加密过程首先对明文分组进行操作,需要加密的明文分组固定为64比特的块。图2-1是DES加密算法的加密流程。图2-2是密钥扩展处理过程。
图2-1
图2-2
三、DES算法的实现
DES算法的加密与解密过程互逆,我们以加密算法为例,一步一步实现加密。
1、子密钥的产生
由于子密钥产生与DES加密过程相互独立,所以我们先实现子密钥函数。64比特的密钥生成16个48比特的子密钥。其生成过程如图1-2.
a. 首先我们这里64比特密码用的是16位十六进制的数转换为64比特。
b. 然后经过置换选择1.如图3-1
图3-1
用函数的实现方法是,首先将PC-1表存起来,然后循环每次对照表,依次取出密钥数组对应的比特。
c .接下来我们要将得到的56比特,前28位赋值给C[28];后28位赋值给D[28]。
d .接下来左右部分分别按照LS[1],循环左移,第一位移动到第28位。每一轮移动的位数都是在上一轮移动结束的基础上再移动LS[n]位(n<17),所以第n轮移动的位数实际上为LS数组前n项的和(为方便,LS[1]代表第一轮,LS[0]=0)。
LS数组如下图3-2:
图3-2
e .将移动结束后的C[28],D[28]结合为K[56],按照IP2表如图3-3进行置换输出。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库des课程设计在线全文阅读。
相关推荐: