基于DES的加密算法(精选9篇)
基于DES的加密算法 篇1
1 引言
随着信息社会的到来, 人们在享受信息资源所带来的巨大的利益的同时, 也面临着信息安全的严峻考验。数据传输保密的数学模型主要包括数据的加密与解密, 使用加密算法能做到数据加密, 在各种信息安全技术措施中, 硬件结构的安全和操作系统的安全是基础, 密码技术是网络安全与保密的核心和关键。DES算法是目前使用最多的加密算法, 也是最有代表性的分组加密算法, 虽然DES加密算法在面对差分分析、线性分析以及穷举密钥法时有被破解的风险, 但凭借其自身的优点, 相关产品仍然占据市场的主导地位, 目前广泛的应用于保密通信之中。随着三金工程尤其是金卡工程的启动, DES算法广泛应用于POS机、银行自助终端、磁卡及智能卡 (IC卡) 、加油站等领域, 来实现核心数据的保密, 如信用卡持卡人的PIN的加密传输, IC卡与POS间的双向认证、金融交易数据包的MAC校验等, 均用到DES算法[1]。本文介绍了D E S算法的基本原理及V C++具体实现过程。
2 DES算法的实现
对DES而言, 密钥表面上是64位的, 然而只有其中的56位被实际用于算法, 其余第8、16、24、32、40、48、56、64 bit 8位可以被用于奇偶校验, 并在算法中被丢弃[2]。DES的算法是对称的, 既可用于加密又可用于解密。功能是将输入的64位数据块经过初始置换按位重新组合, 并把输入分为左右两部分 (L、R) , 各部分各有32位, 将L1=R0, R1=L0f (R0, K1) 。DES加密过程如图1所示。
将加密的数据分割成以若干个以64位为单位的数据 (如果位数不够用00或FF补足) , 按照8行8列进行排列, 使用固定的IP置换表对64位的二进制明文块进行重新排列, 置换完毕的明文块被分为两个半区L0 (前32位) 、R0 (后32位) 。
2.1 子密钥产生过程描述
初始K e y值为6 4位, 在D E S加密算法中, 第8、16、......64位用来进行奇偶校验位, 不直接应用于DES运算, 这样密钥能用位数实际只剩下56位。经过缩小选择轮位变换后, 密钥位数成为了56位, 然后把它平分为两部分, 分别占28位, 再对每部分进行循环左移, 把两部分重新生成的位数重新合并, 进行新一轮的缩小选择轮位变换, 新密钥位再次减8剩下48位, 依次循环, 可生成得到K1~K15的密钥, 每次对密钥循环左移位数要依据表1对应的规则进行:
以上是DES算法进行加密的规则, 解密过程与加密规则大致相似, 不同之处是迭代时第一次用子密钥K15, 然后用K14、……, 最后再用K0, 可以看成加密算法的逆过程[3]。
2.2 乘积变换
乘积变换包括:扩展置换, 与48比特密钥进行异或操作, S-盒置换, P-盒置换。
(1) 先将输入的32比特的数据分成8组, 每组4比特。把上一组的最后一位加在该组的前面, 把下一组的最前的一位放在该组的后面, 且8组为循环, 然后再与已经经过移位和置换的4 8比特密钥进行异或操作, 将得到的结果新的48比特数据送入S-盒进行非线性替换。
(2) S-盒将48比特的输入分成8组, 每组6比特。若输入的6比特为A= (a1, a2, a3, a4, a5, a6) 则a1和a6两位二进制数可以确定0~3之间的一个数字, 它决定S-盒置换表中的某一行, 而a2、a3、a4、a5这四位二进制数可以确定0~15之间的一个数字, 它决定S-盒置换表中的某一列, 行列交界交叉处所存的十六进制数的二进制数转换即为新的输出。
(3) 通过将48比特数据替换成新的32比特的数据, 新得到32比特的数据再经过P-盒进行换位重排.将P-盒置换的结果与最初的6 4比特分组的左半部分的3 2比特进行异或运算, 作为下一轮变换输入的右半部分, 而原来的右半部分作为下一轮变换输入的左半部分, 即完成一轮变换[4]。
2.3 逆置换
初始明文按照IP重排, 16轮后的密文按照IP-1重排即为最后密文, 如表2和表3所示:
3 主要模块设计与实现
在VC++环境中, 通过M F C工具建立工程, 实现对界面的设计和完善。类的共有接口只设计一个, 即加密解密函数。其他像读文件, 写文件, 加密变换函数等等设置为私有涉及内容:文件操作, STL向量, 数制变换, 位操作及函数设计等[5]。具体的函数功能为:
(1) bytetobit () :将输入的字节组转换为位组。
(2) transform () :通用置换函数, 根据具体情况确定要执行哪种置换。
(3) memcpy () :进行内存单元的复制。
(4) f_func () :此函数是des_run () 函数运行的关键, 是将32比特的输入转化为32比特的输出。
(5) xor () :进行异或运算, 异或运算是按位作不进位加法运算。
(6) bittobyte () :将位组转换字节组。
3.1 加解密功能的具体实现
加解密功能实现, 代码如下:
这个函数整个算法运行程序的最主要部分。这个函数用于加密还是解密取决于type的类型, 如果type为encrypt, 则进行加密;如果type的类型为decrypt, 则进行解密。文件的加密:通过浏览文件 (也可以通过选择目录选取所需要的文件) , 读取需要加密的文件, 输入密钥, 生成DES加密文件[6]。生成文档的图如图2, 加密功能实现如图3。
3.2 文件的加解密
通过浏览文件 (也可以通过选择目录选取所需要的文件) , 读取需要加解密的文件, 输入密钥, 再进行密钥确认, 生成新的密文或还原成之前的文件。如图4和图5所示, 文档加密后, 显示为乱码, 达到加密要求。
4 结束语
本系统可以加密任何格式的单个文件, 如:t x t、doc、cpp等, 计算量小, 处理速度快, 加密算法简洁, 不会占用系统太多的空间。但只限于单重加密, 且存在加密漏洞。下一步进一步改进完善, 将此加密系统做成一个DES三重加密, 安全性更高更好。
摘要:密码技术是信息安全的核心技术, 把密码算法应用到程序中对数据进行加密, 实现数据的安全保密也越来越重要, 本文简要介绍了DES (Data Encryption Algorithm, DEA) 算法的基本原理及具体实现过程, 通过对分组密码DES算法子密钥循环缩小选择轮位变换产生过程描述、扩展置换, 与48比特密钥进行异或操作的乘积变换、IP逆变换的分析, 并结合VC++编程环境, 以界面的形式实现加密和解密。实验结果表明, 生成的系统计算量小, 处理速度快, 达到了效果。
关键词:DES,VC++,加密算法,乘积变换
参考文献
[1]梁峰, 相敬林, 赵妮.基于混沌理论的差异演化算法研究[J].计算机仿真.2006.171-173
[2]解双建, 原亮, 谢方方.DES算法原理及其FPGA实现[J].计算机技术与发展, 2011, 21 (7) :158-160, 164.
[3]李永彬, 雷菁, 熊春林等.DES加密算法的高速FPGA实现[J].计算机与自动化技术, 2005, 31 (7) :39-41.
[4]贺金平, 吕杨.基于蓝牙Ad hoc网络安全机制的研究与加密设计[J].自动化技术与应用, 2007 (6) :85-87.
[5]农盛功, 周满元.基于三维空间的图像加密算法[J].计算机系统应用, 2010, 19 (8) :87-91.
[6]王磊.基于异或算法的混沌图像加密技术的研究[D].昆明:云南大学, 2012.
基于DES的加密算法 篇2
关键词:数字水印;Arnold置乱变换;水印嵌入
中图分类号:TP393.08 文献标识码:A文章编号:1007-9599 (2010) 04-0000-02
Arnold Scrambling Based Image Encryption Algorithm
Dong Yanfen1,Wang Yunzheng2
(1.Huanghuai College,Computer Science Department,Zhumadian463000,China;2.96552 Troops of PLA,Luoyang471000,China)
Abstract:It proposes a new Arnold scrambling watermark image algorithm,then embedded in digital products distributed according to certain rules of the watermark.The algorithm is tested through a variety of attacks.It has strong robustness against JPEG lossy compression、median filtering attack、high-intensity noise attack.It has good transparency and robustness At the same time,it has higher utility.
Keywords:Digital watermarking;Arnold scrambling transformation;Watermarking
为提高隐藏信息的安全性,在隐藏前需对其进行置乱操作,本文提出一种基于图像置乱的数字水印算法。通过在水印图像嵌入载体图像之前先对其预处理,使其“变乱”;然后再利用小波变换的多分辨率特性对水印实施嵌入、提取,由于提取后的水印在置乱算法的恢复下能够分散那些受到攻击的像素,可以减少对视觉的影响。因此这种将置乱算法和水印算法的共同结合进一步提高了水印系统的安全性,并且鲁棒性也得到了增强。
一、水印图像Arnold变换
Arnold变换(cat mapping)是V.J.Arnold在遍历理论的研究中提出的一类裁剪变换。图像可看作是平面区域上的二元函数G=F(x,y),(x,y)∈R.通常R是一矩形,对R中任意的点(x,y),则F(x,y)代表图像的信息(如灰度值等),在图像被数字化后,G=F(x,y)相应于一个二维离散点阵,其元素所在的行与列对应于自变量的取值,元素本身代表图像信息。离散化的数字图像相当于元素之间有相关性的一类特殊矩阵。对这一矩阵做某些变换可以得到新的矩阵,从而实现图像的置乱处理。令数字图像的像素坐标x,y∈{1,2,…,N},于是Arnold(实为二维Arnold)变换为
(1)
记变换矩阵为A,左端(x',y')T为输出,右端(x,y)T为输入,n为图像矩阵的阶数。从式(1)可知,Arnold变换是一个保面积映射(没有吸引子),同时是一一映射,因此不同位置的水印像素嵌入到载体系数空间的位置不会重叠;当迭代次数足够大时,任意两个相邻的水印像素点嵌入到载体的位置将会产生极大的分离。这样水印的全部像素将随机而均匀的置乱到载体支图的整个系数空间。由于Arnold变换呈周期性,水印图像的尺寸是一定的,因此置乱迭代一定次数后总可以恢复到原始水印图像,但是有时计算量会很大。当恢复需迭代次数非常多时,我们采用把A拼凑成方阵的方法构造Arnold逆变换通过相同的迭代次数k逆变换回原始水印图像,可以节省迭代次数和恢复时间,其中迭代次数可以为水印系统提供密钥key,从而增加了系统的安全性和保密性。
二、算法分析
本算法包括水印嵌入和提取过程,所使用的水印为单色位图,载体是24位位图。
(一)水印嵌入算法
设X为原始图像,待隐藏的二值图像为W,信息嵌入过程包括原始图像小波分解、待隐藏图像置乱变换、、水印嵌入及小波重构生成水印图像等环节。其步骤如下:
1.为了增加攻击的复杂性,首先对待隐藏图像W进行Arnold变换。
2.把原始图像X分为n×n个区域,对每一区域进行三层多分辨率分解;经3级小波变换分解后,形成不同分辨率,不同方向上的子带。
3.选择每个区域的HH,LH,LH1,HH1,LH2:和HH2子带进行信息嵌入。我们设待隐藏序列为wi ={wi ∣wi∈{0,1},i = 0,1,..., Nw -1},每位信息位嵌入到n个系数中。采用一种均值量化算法和块视觉阀值计算JND (just noticeable difference)相结合的算法进行嵌入。
4.分别对每块进行小波逆变换,得到含嵌入信息的图像。
(二)水印提取算法
水印提取过程是嵌入的逆过程,其过程为:
1.分块离散小波变换。通过对嵌入过程3的逆过程,可取出每个区域块的信息。
2.对提取出来的水印再进行Aronld逆变换,经过迭代即可还原出隐藏信息。
三、实验结果与分析
(一)攻击实验
为了客观地评价恢复出来的水印图像质量,用以下两个指标进行衡量。
1.归一化互相关系数。
式中,w为原始水印信号,w'为被恢复出来的水印信号, 为w的均值, 为w'的均值。相关系数NC是小于等于1的正数。值为1时,表示w'与w的线性联系最紧密;值为0时,表示不相关,线性联系最弱。
2.PSNR峰值信噪比是一种比较接近人眼视觉效果的评价,信噪比越高说明算法的性能好,其表达式为
式中,X和X' 分别表示处理前的图像和处理后的图像。
(1)进行JPEG有损压缩。
JPEG有损压缩是检测水印鲁棒性的一个重要指标,也是图像流通过程中最常遇到的攻击处理。由于图像本身的数据量大,如果以非压缩的形式放置于网络上,则会存在占用存储空间增大,传输速率降低,同时下载很慢的特点,严重影响了图像在网络上的利用效率。为了解决这一矛盾就必须将水印图像进行有损压缩压缩。表1是质量因子取不同值时提取信息的检测情况。
由于JPEG有损压缩会造成图像不可恢复的数据损失,所以不可避免的将会一定程度上影响到水印信息。从上表中可以看出随着压缩率的增大,水印的相似系数在减小。
(2)对图像进行噪声干扰。
图像在流通过程中常会遇到噪声的干扰,因此检测水印对噪声的抵抗性是考察水印鲁棒性的一个重要方向。在加入水印后图像中加入均值为0,方差为 0.0005的高斯(gaussian)噪声和0.01 5的椒盐噪声,然后从加噪图像中提取嵌入信息,并计算其相关系数。表2为加入不同噪声提取信息的情况。实验结果表明:本算法对噪声攻击有较强的鲁棒性。
(3)进行一般的图像处理。
锐化(Sharpen)和模糊(Blur)是很常见的图像处理方法。实验结果表明算法对锐化和模糊处理都有很好的鲁棒性,提取的嵌入信息和待隐藏信息有较好的相关性。表3为进行锐化和模糊提取信息的情况。
通过对提出的算法进行了仿真实验,并对嵌入信息的图像进行JPEG有损压缩、噪声处理和其他图像处理的各种攻击测试。虽然攻击测试处理后相关系数值有所下降,但是仍能检测出水印。实验表明,该算法对嵌入信息具有良好的不可见性和鲁棒性。
四、结论
通过实验,发现把置乱算法和小波变换相结合能够进一步提高对数字信息的保护,水印的不可见性和鲁棒性都得到了提升,使攻击者试图非法提取水印更加困难。利用Arnold算法预先对载体图像进行置乱,然后在小波域中实施水印图像的分散嵌入,有效的提高了水印的安全性、透明性与稳定性。能有效隐藏和保护水印信息,抵抗常见的对图像的恶意攻击,鲁棒性好。算法不足之处在于当攻击强度加大(如高斯噪声强度大、锐化范围太大、中值滤波窗口大等)时,提取的水印效果不理想。为能抵抗强度更大的攻击,对嵌入的方法还可做更进一步的研究。
参考文献:
[1]Zhang G C,Wang R D, Zhang Y J.Digital image information hiding technology based on iterative blending[J].Chinese Journal of Computer,2002,25,5:569
[2]Wang D S,Qi D X.A new hiding scheme of digital image[J].Chinese Journal of Computers,2000,23,9:949
[3]陈萍,史金昌.基于图像置乱变换的数字水印算法研究[J].高师理科学刊,2007,27,6:25-28
基于DES的加密算法 篇3
DES算法主要包括:初始置换、16轮迭代的乘积变换、初始逆置换以及16个子密钥产生器[2]。DES加密过程如图1所示。
初始置换主要用于对明文中的各位进行换位,目的在于打乱明文中各位的排列次序,输出结果按奇偶分为左右两路送入乘积变换部分。在这个过程中不使用密钥,仅仅对64位码进行移位操作。而进行逆初始置换是为了使加解密统一使用同一种算法。初始置换与初始逆置换只是将64位输入的数据按位进行重新排列,只需要一些输入输出端口,按照置换规则把输入与输出对应关联即可[3]。下面只介绍密钥的产生与16轮迭代乘积变换模块的设计。
1子密钥生成模块
DES算法每一轮次迭代都需要一个子密钥,要实现DES算法就需要提前生成子密钥,并且按照时序准确地传递给迭代过程。
子密钥产生模块由选择控制、循环移位控制等部分构成。该模块的输入是64位初始密钥,输出为参加每次迭代运算的子密钥,另外还有一个控制信号(time),用来控制在不同迭代过程中移位的次数。本设计采用硬件描述语言(VHDL)按照子密钥产生的过程,通过置换选择1、循环移位、置换选择2,一步一步得到子密钥的。循环移位仿真结果如图2所示。图中,c0、d0是经过置换选择1后得到的前后28位,Time为控制移位次数的控制信号,k1为移位后的结果,再经过置换选择2即可得子密钥。
因为每轮移位的次数不同,所以每轮子密钥产生的时间也不相同,所以会给迭代运算带来延迟,这也是采用VHDL设计存在的不足。从VHDL设计结果可以看出,原密钥与每轮子密钥之间有固定的关系,因此,可以通过软件分析,建立子密钥相对于原始密钥的关系表,在硬件实现时直接使用此关系表即可,这样也可以有效地节省硬件资源。
2迭代变换
DES算法是典型的迭代分组密码算法,实现过程的核心是16轮次相同的迭代运算。输入的64位明文先执行初始置换对明文进行换位处理;然后通过子密钥k1~k16对明文进行16轮乘积变换,即进行16次迭代处理;最后经过逆初始置换的处理,得到64位的密文输出。16次迭代的目的是使明文增加混乱性和扩散性,避免输出密文残留统计规律,使破译者无法反向推算出密钥。
轮迭代运算中的f函数是非线性的,它是每轮实现混乱和扩散的最关键的模块,也是整个加密算法的核心,它包括E盒扩展置换、S盒置换和P盒置换,其基本过程如图3[4]所示。其中,E盒扩展置换、P盒置换的原理和实现方法与初始置换以及逆初始置换类似,运算过程都是线性的,而S盒是一个复杂的非线性函数,正是经过了S盒的非线性变换,才使算法达到很好的“混乱”效果,从而具有较强的安全性。因此,S盒的设计是DES算法的关键部分,S盒设计的优劣将影响整个算法的性能。
基于S盒的表现形式是矩阵形式,因此在使用VHDL语言建立S盒模型时,一般都会想到直接用多重选择CASE语句[5]。在这里即采用CASE语句实现。用CASE选择语句实现S盒有两种方式:一种是直接使用S盒的6位输入为6个变量的CASE语句方式,另一种方式是使用双重CASE嵌套语句,即外层使用2个输入控制S盒的横向选择;内层使用4个输入控制S盒的纵向选择。采用双重CASE语句可以直接定位输出结果。这两种方式下占用资源的情况如表1所示。
根据表1比较的结果可以看出,选择双重CASE语句建立S盒模型可以大大节省资源,其仿真结果如图4所示。s0为S盒的输入,s2为S盒的输出,这样就完成了非线性的变换。图5为通过QuartusⅡ实现的基于FPGA的DES加密算法的硬件仿真线路图。
本文通过对各个模块特别是S盒与子密钥生成模块的详细分析,给出了DES加密的一种实现方法,并在此基础上对部分模块进行了验证仿真,给出了硬件仿真线路图。这种设计方法是根据功能模块分层进行的,因此可以节省设计时间,减少设计输入的错误,简化验证的过程。
摘要:介绍了DES算法的基本原理与加密过程,给出了基于FPGA的DES算法的硬件实现,并且用Quanus Ⅱ实现了模块仿真,验证了DES加密算法。
关键词:DES 算法,FPGA,仿真
参考文献
[1] STALLINGS W.Cryptography and network security princi- ples and practices[M],prentice Hall,1996.
[2] 胡向东,魏琴芳.应用密码学[M].北京:电子工业出版 社,2006.
[3] 高献伟,周玉坤,路而红,等.DES 算法硬件实现的研究[J].北京电子科技学院学报,2001,(1) :11-15.
[4] 张福泰.密码学教程[M].武汉:武汉大学出版社,2006.
基于DES的加密算法 篇4
【摘要】为了有效地提高实时工业以太网系统的安全性,提出通过利用IEEE1588同步算法得出的传输延时及时钟偏差作为密钥对报文进行加密策略,实现底层数据的加密,利用周期通信的原理及密钥的长期不可预测性及周期有效性,提高的加密的抗攻击性,以较低的通信延时开销获得较好加密效果,能应用在多种实时工业以太网应用领域,具有较高的实用价值。
【关键词】IEEE 1588 时间戳 传输延时 周期通信 密钥
一、引言
工业以太网虽然源于与传统以太网,但是其面向生产过程,对实时性、可靠性、信息安全性和功能安全性有很高的要求。既有与传统信息网络相同的特点和安全要求,也有自己显著不同应用特点和安全要求;传统信息安全手段各类加密策略与加密算法,会带来冗余数据增加,数据封装与解封时间加长,线路延时增加过长等等因素,对系统实时性有一定影响,不适运动控制、高精度测控等对实时性要求极高的实时工业以太网应用领域。
IEEE 1588协议是应用于网络化测量和控制系统的精确时钟同步种协议。该协议具有占用通信带宽小,对系统资源要求低等优点,特别适合采用多播技术的网络,在采用硬件时间戳和边界时钟等技术后,IEEE 1588的时间同步精度最高可达纳妙级,已经成熟应用在PROFINET、EtherCAT、PowerLink、EtherNet/IP、EPA等主流多种实时工业以太网技术中。本文在分析IEEE 1588同步算法及实时工业以太网常用的周期性通信机制的基础上,利用通信线路延时的长期不可预测性及周期有效性,提出了一种利用传输延时及时钟偏差作为密钥对实时工业以太网报文进行加密的策略,并以EPA-FRT协议作为研究对象,分析该加密策略的可行性与部分基本的实现方案。
二、IEEE 1588同步算法简介
三重DES加密算法原理与实现 篇5
对称密码体制其特点是发送和接收的双方使用同一密钥,且该密钥必须保证不被泄露;加密算法的安全性依赖于密钥的秘密性,而非算法的秘密性。DES加密算法就是对称加密体制中的佼佼者。1977年1月,美国政府采纳IBM公司设计的方案作为非机密数据的正式数据加密标准(DES)。DES被授权用于所有公开的和私人的非保密通信场合,后来它又曾被国际标准组织采纳为国际标准。
虽然现在DES已不作为数据加密标准,但至今它仍然被广泛的应用,而且它是一种最有代表性的分组加密体制。因此,研究这一算法的基本原理、设计思想、安全性分析以及实际应用中有关问题,对于掌握分组密码理论和当前的实际应用都是很有意义的。
1 DES算法原理
DES是一种分组加密算法。明文分组长度为64位。加密得到的密文分组长度为64位。密钥长度64位,8个字节。每一个字节的最高位用于奇偶效验,所以有效密钥长度为56位。其分组加密过程描述如下:(1)子密钥Ki的生成。(2)64位的明文经过一个初始置换IP后,被分成左右两半部分,每个部分32位,以L0和R0表示。(3)进行16轮迭代变换:第i轮变换将上一轮变换所得到的结果的右半部分与第i个子密钥Ki结合,这个过程称为f函数。第i轮变换结果的左半部分为上一轮变换结果的右半部分(即:Li=Ri-1),其右半部分为上一轮变换结果的左半部与上一轮变换结果的右半部经过F函数处理所的结果的异或:Ri=Li-1⊕F(Ri-1,Ki)。(4)16轮变换之后左右两部分再连接起来,经过一个初始逆置换IP-1得到密文。其加密过程如图1所示。
DES的解密算法与加密算法完全相同,只需要将密钥的应用次序与加密时相反应用即可。即解密过程是初始置换函IP数接受长度为64比特的密文输入,将16个子密钥按照K16到K1的顺序应用与F函数的16轮迭代运算中,然后将迭代的结果经由末置换函数IP-1得到64位的明文输出。
2 两个密钥的三重DES
由于DES密钥只有56bit,易于遭受穷举时攻击。作为一种替代加密方案,Tuchman提出使用两个密钥的三重DES加密方法,并在1985年成为美国的一个商用加密标准。该方法使用两个密钥,执行三次DES算法,如图2所示。加密的过程是加密-解密-加密,解密的过程是解密-加密-解密。
采用两个密钥进行三重加密的好处有:(1)两个密钥合起来有效密钥长度有112bit,可以满足商业应用的需要,若采用总长为168bit的三个密钥,会产生不必要的开销。(2)加密时采用加密-解密-加密,而不是加密-加密-加密的形式,这样有效的实现了与现有DES系统的向后兼容问题。因为当K1=K2时,三重DES的效果就和原来的DES一样,有助于逐渐推广三重DES。(3)三重DES具有足够的安全性,目前还没有关于攻破三重DES的报道。
3 Java语言编程实现DES算法
3.1 子密钥的生成
1)PC-1变换。将原密钥的各位按照PC-1矩阵重新排列,这一过程剔除了奇偶校验位。PC-1如下:
2)将排好的密钥分成两部分,前面28位为C0,后面28位为D0
3)从i=1开始,循环执行16次以下步骤得到16个子密钥。
(1)对Ci-1和Di-1进行相同位数的循环左移,得到Ci和Di
左移的位数为:
i取数值:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
移动数:1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
(2)连接Ci和Di,按照矩阵PC-2排列选择合适的位,构成子密钥Ki,该过程将56位压缩到48位,PC-2如下:
(3)i=i+1,转到(1),直到生成16个全部自密钥。
3.2 对64位明文分组加密
1)取得64位明文,不足补齐(补0)
2)对明文各位按照IP矩阵进行排列,矩阵为:
3)将得到的结果分为左右各32位两部分,称为L0,R0
4)从i=1开始,循环执行16次下列的加密过程
(1)按照下面矩阵E将32位的Ri-1扩展为48位,所得结果称为E(Ri-1),E阵为:
(2)将E(Ri-1)和Ki按位异或
(3)将所得结果分为8个部分,每个部分6位,形成B[1],…B[8]
(4)S盒替代。
S盒是8个子矩阵,称为S[1],….S[8],替代如下:将B[i]的第1位和第6位组成一个数称为R,第2、3、4、5位组成一个数称为C,用S[i]中对应的(R,C)中的4位数替换B[i],这样就将原来的48位替换成32位。
(5)P盒置换,按照下面的矩阵重新排列上面的结果
(6)将上一步处理的结果与Li-1按位异或,得到新的Ri,该过程可以简单记为:Ri=Li-1⊕F(Ri-1,Ki)
(7)i=i+1转(4)的第一步,直到完成16次循环
(8)进行IP-1置换,将上面得到的L16R16按照下面的矩阵进行置换:
加密过程结束,解密过程是用K16,K15,…..K1
3.3 DES算法的伪代码表示
C[0]d[0]=PC1(KEY)
FOR I=1 TO 16
C[I]=LS[I](C[I-1])
D[I]=LS[I](D[I-1])
K[I]=PC2(C[I]D[I])
L[0]R[0]=IP(PLAIN BLOCK)
FOR I=1 TO 16
L[I]=R[I-1]
R[I]=L[I-1]⊕F(R[I-1],K[I])
CIPHER BLOCK=FP-1(L[16]R[16])
4 算法安全性分析
DES算法具有相当高的复杂性,密码函数F的非线性性质非常好,起到的“扰乱”效果非常显著,并且还遵循了严格雪崩准则和比特独立准则,这使得要破译它的开销要超过可能获得的利益。再加上其便于理解掌握,经济有效,因此,得到了广泛的应用。算法具有极高的安全性,到目前为止,除了用穷举搜索法对算法进行攻击外,还没有发现更有效的办法。而56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一秒种检测一百万个密钥,则它搜索完全部密钥就需要将近2300年的时间。而采用三重DES,破译它就更可想而知了。当然,这并不等于说是不可破解的。而实际上,随着硬件技术和网络的发展,其破解的可能性越来越大,而且,所需要的时间越来越少。
DES算法的有效密钥长度为56位,因此,在实际应用中,我们应避开使用第8,16,24,......64位作为有效数据位,才能保证DES算法安全可靠地发挥作用。如果不了解这一点,将不能保证DES加密数据的安全性,对运用DES来达到保密作用的系统产生数据被破译的危险,这正是DES算法在应用上的误区,留下了被人攻击、被人破译的极大隐患。
参考文献
[1]陈卓.网络安全技术[M].北京:机械工业出版社,2004.
基于DES的加密算法 篇6
DES是Data Encryption Standard(数据加密标准)的缩写,它是由IBM公司研制的一种加密算法,美国国家标准局于1977年公布把它作为非机要部门使用的数据加密标准。DES算法在AT、磁卡及智能卡、加油站、高速公路收费站等领域被广泛应用,以此来实现关键数据的保密。如信用卡PIN的加密传输、IC卡的双向认证等都用到了DES算法,而且DES在电子商务中也得到了广泛地应用。但是现在很多产品都屏蔽了DES算法的加密过程,同时在教学中,由于具体的信息通过手工的方式来实现其加密过程是非常困难的,使得掌握DES算法造成了一定的难度。本文就是在这种背景下,用Delphi语言模拟其加密实现的过程,并且把实现过程中用到的变量用文本框的方式让使用者输入,帮助初学者快速掌握DES算法。
1 DES算法的原理
DES是一个分组加密算法,它以64位为分组对数据进行加密。同时DES也是一个对称算法:加密和解密用的是同一个算法。它的密钥长度是56位(因为每个第8位都用作奇偶校验),密钥可以是任意的56位数,而且可以随时改变。DES算法的具体实现过程包括两大部分,即密钥计算和加密计算。
1.1 DES的密钥计算
从用户处取得一个64位(本文如未特指,均指二进制位)长的密码Key,Key=K1K2K3…K65K64,去除64位密码中作为奇偶校验位的第8、16、24、32、40、48、56、64位,剩下的56位作为有效输入密钥。通过固定的置换对56位密钥进行置换,并将置换的结果分为两个部分即前28位记为C0和后28位记为D0。
DES算法的密钥是经过16次迭代得到一组密钥。把前面得到的C0和D0进行循环左移一位得到C1和D1,再通过固定的置换得到32位的密钥,即Key1。然后再把上次循环左移得到的Ci和Di依次左移,左移的位数有固定的规定,每次都不相同,然后再进行固定的置换依次得到32位的密钥,即Key2…Key16。
1.2 DES的加密过程
DES对64位的明文分组进行操作,通过一个初始置换,将明文分组成为左半部分和右半部分,各32位长。然后进行16次完全相同的运算。这些运算成为函数f,在运算过程中数据与密钥结合,经过16轮后,左、右半部分结合在一起,经过一个末置换(初始置换的逆置换),完成该算法。加密过程:DES(m)=IP-1。T16。T15。…。T2。T1。DES标法流程图如图一所示:
1.3 DES的解密过程
数据解密的算法与加密算法相同,区别在于在迭代过程中和数据进行按位异或的密钥的使用顺序不同。在加密中是按照第i次迭代就采用第i次迭代生成的密钥进行异或;而解密时第i次迭代就采用第17-i次迭代生成的密钥和数据进行异或,即密匙的次序相反。如果各轮加密密匙分别是K1,K2,K3,…,K16,那么解密密匙就是K16,K15,K14,…,K1。
2 DES算法的Delphi实现
具体的实现如图二和图三所示。输入要加密的明文和密钥,单击“加密”按钮在密文文本框中显示加密后的密文,单击“解密”按钮,在明文文本框中显示解密后的明文。单击“清屏”按钮清空所有文本框,以便进行新的加密。在本系统中可以实现对数字、字母和汉字的加、解密。
在编程的时候,如果密钥长度小于8位,就在密钥后面补x;如果输入的明文不是8的倍数,则在最后补NUL。然后把补齐后的明文转换为二进制,按照DES算法的原理先生成密钥再进行加密和解密运算。
加密实现的主要的程序:
3 结束语
本系统可以很形象地表现出该算法的加密实现过程,对初学者学习此算法提供了帮助。但是在通用性方面还要不断加以完善。
参考文献
[1]曹天杰.计算机系统安全[M].北京:高等教育出版社,2003.
[2]阙喜戎,孙锐.信息安全原理及应用[M].北京:清华大学出版社,2003.
[3]杨长春.Delphi程序设计教程[M].清华大学出版社,2003.
[4]DouglasRStinson.密码学原理与实践(第二版)[M].北京:电子工业出版社,2003.
[5]韩宝明,杜鹏,刘华.电子商务安全与支付[M].北京:人民邮电出版社,2001.
基于DES的加密算法 篇7
DES即数据加密标准是Data Eneryption Standard的缩写,它是一种对称加密算法,也是一种分组密码。通过反复使用加密组块替代和换位两种技术,经过16轮的变换后得到密文,安全性较高。微软公司提供了DES公用密钥的加密类函数DES Crypto Service Provider(),在.NET开发系统中,利用Visual Studio编程平台,使用微软提供的加密类函数,我们可以自己编制自己的DES加密算法软件,从而可以方便地进行大文件的加密和解密,进而对文件的安全性进行游刃有余的自主控制。
2 文件的选择
首先对需要加密的文件进行选择,选择完之后,便可以对文件进行DES对称加密算法加密了。我们这里以PDF文件为例进行加密,其C#编程对话框如图1所示。
其PDF文件选择按钮代码如下:
3 文件的DES加密
选择好要加密的文件之后,在输入密码对话框中输入需要加密的密文,就可以对文件进行加密了:
在进行加密之后一定要把加密流以及文件的输入输出流给关闭,从而释放文件操作所占用的系统内存资源,以及避免文件有出现无法预料编译错误或其他结果。其中流的关闭代码如下:
对文件进行加密之后,所加密的PDF文件如果不进行解密的话,就不能正常打开,如果强行打开,那么就会出现如图2所示的错误提示。
所以只有对加密过的PDF文件进行解密,才能重新用PDF文件格式打开文件。
4 文件的DES解密
想要对加密的文件重新进行正常打开,必须对加密的文件进行DES对称解密,其解密代码如下所示。
在进行解密之后同样要把解密流以及文件的输入输出流给关闭,释放文件操作所占用的系统内存资源,这样操作才不会出现内存的泄露以及编译出现不可预知的结果。
5 结束语
DES对称加密及解密算法的Visual Studio C#实际编程应用,可灵活地对所要保护的文件进行加密,在一定程度上较好地解决了加密文件不被篡改、盗用等危害,并确保了PDF或其他格式文件的安全性。由于时间过长而忘记了加密文件的密码,可以通过编程软件对所加密文件的密文随时进行查看,然后输入密文进行解密,充分确保了文件的安全和有效。
参考文献
[1]周文婷,朱姣姣.DES加密算法的一种改进方法[J].计算机安全.2012.09:47-50.
[2]刘浩,李强.简明DES加密算法的实现[J].甘肃科技,2004.11v0120:60-62.
[3](德)侯姆,克鲁克,斯酱达著,薛兴涛,袁勤勇译.C#软件项目开发全程剖析[M].北京:清华大学出版社.
基于DES的加密算法 篇8
1Huffman和S-DES混合加密算法与现有及传统加密算法的比较
文本加密技术是保障信息安全最基本、最核心的技术措施,主要通过对数据的加密和数字签名来实现。其中对数据的加密处理主要是为了防止数据不会被窃听。数据的加密方式有两种,一种是传统的对称密钥加密,就是加密方用一把密钥对数据进行加密,而解密方用同样一把密钥对数据进行解密。第二种是非对称密钥加密,如果使用这种算法,可以保证对发送方和接收方身份的确认。而数字签名实际上是由生成摘要和生成数字签名两部分构成。其中摘要可以防止文件被篡改,保证信息的完整性;而数字签名则是为了保障在商务活动中数据的不可否认性,从而使数据具有法律意义。
目前在文档安全管理市场上,加密可分为:文档格式转换加解密、核心层加解密、应用层加解密。常见的加密软件有:1) 记事本加密器Ncrypt TX,它预设了多种加密算法,包括DES、3DES、Rijndael、Polyalphabetic、ROT13、Vigenrre、Playfair等。当然不同的加密算法支持不同的数据编码格式,如Hex、Base64、Text、Word等。在工具栏中也可以相应地设置所需的密码。2) 超级密码本SuperCode有两个特色:第一是多重加密功能;第二是密码自动生成,通过创建密钥文件,摆脱记忆密码的烦恼。Super Code内置了Triple DES、DES、Rijndael、RC2等加密算法。Super Code的特点是允许你以上述加密算法为依据,自由组合,创建自己独有的加密算法序列,例如可以选择两种Triple DES算法,一种DES算法,三种RC2算法,五种Rijndael算法,而且可以灵活排列其先后顺序。
对称密钥密码系统,历史悠久,加/解密速度快是其优点,但因加密密钥与解密密钥为同一把密钥,信息的传送方如何在加密之后,将密钥以安全的方式传送给接收方,如何使双方能共享该密钥,是此密码系统的一大问题,因此,对称密钥密码系统不适合多人使用的应用。
非对称式加密就是加密和解密使用的不是同一个密钥,通常有两个密钥,称为“公钥”和“私钥”,它们必须配对使用,否则不能打开加密文件。“公钥”是指可以对外公布的,“私钥”则只能由持有人知道。它的优越性在于,对称式的加密方法如果是在网络上传输加密文件就很难把密钥告诉对方,不管用什么方法都有可能被别人窃听到,而非对称式加密方法有两个密钥,“公钥”可以公开,收件人解密时只要用自己的私钥即可,这样就很好地避免了密钥的传输安全性问题。
非对称式密码系统也称为“公开密钥密码系统”,它弥补了对称密钥密码系统的缺点,但运算速度较慢是公开密钥密码系统的缺点。
DES算法运算速度较慢,但在此基础上改进的S-DES算法,是一个对称分组加密的简化模型,有利于研究和实现,再结合Huff-man编码对文本信息进行压缩编码,即Huffman编码和S-DES算法相结合的混和加密算法就应运而生了。
2Huffman和S-DES加密算法原理分析
2.1 Huffman编码原理分析
哈夫曼编码是一种变长编码,是哈夫曼树的一个应用。哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。
哈夫曼编码根据字符出现的概率来构造平均长度最短的编码。在编码中,若各码字长度严格按照码字所对应符号出现概率的大小的逆序排序,则编码的平均长度是最小的。其中,码字是明文字符,是通过哈夫曼编码后得到的编码,其长度由明文中字符出现的概率决定,出现概率大的编码长度短,出现概率小的编码长度长。
哈夫曼编码对需要编码的数据进行两遍扫描:第一遍统计原数据中各字符出现的频率,利用得到的频率值创建哈夫曼树,并把树的信息保存起来,以便解压时创建同样的哈夫曼树进行解压;第二遍则根据第一遍扫描得到的哈夫曼树进行编码,并把编码后得到的码字存储起来。
哈夫曼编码的缺点:一、对于过短的文件进行编码的意义不大,因为存储哈夫曼树的信息就需要较大的存储空间;二、存储编码信息时,编码速度慢,效率低下。
2.2 S-DES算法分析
S-DES加密算法是以8位明文和10位密钥作为输出。其解密算法用同一密钥对8位密文分组产生原来的明文分组,如图1所示,它描述了S-DES的算法流程。
加密算法的数学表达式:IP-1*fk2*SW*fk1*IP,也可以写为:密文=IP-1(fk2(SW(fk1(IP(明文)))))。其中K1=P8(移位(P10(密钥K))),K2=P8(移位(移位(P10(密钥K))))。
解密算法的数学表示:明文=IP-1(fk1(SW(fk2(IP(密文)))))
S-DES加密算法涉及五个函数
1) 初始置换IP(initial permutation),,将8bit数按照IP函数进行移位;
2) 复杂函数fk1,它是依赖于子密钥K1,包含置换和替换的运算;
3) 置换函数SW,将8bit数的左4bit和右4bit交换位置;
4) 复杂函数fk2,它是依赖于子密钥K2,包含置换和替换的运算;
5) 初始置换IP的逆置换,将8bit数按照IP-1函数进行移位。
3Huffman和S-DES算法混合加/解密过程
3.1 混合加密过程
用数据流方式读入将要加密的文本文件信息,输入密钥并保存,经过第一次哈夫曼编码加密后转化为0/1字符串,在进行第二次加密之前要将0/1字符串分组,每8位一组,将其作为第二次加密S-DES算法的明文输入,经过S-DES算法得到最终的密文,将其保存到另一个TXT文本文件中。混合算法的加密过程如图2所示。
3.2 混合解密过程
解密过程首先要进行身份认证,输入密钥,身份认证成功后将进行解密,否则将不会解密。首先将最终的密文进行分组,每8位一组,经过S-DES算法进行第一次解密,得到0/1字符串,将其作为Huffman算法的编码进行第二次解密,即可得到最终的明文。其混合算法的解密过程如图3所示。
4 Huffman和S-DES混合算法的实现
4.1 Huffman编码的实现
Huffman算法主要涉及到5个核心函数,分别为获取权值数组GetWeightArray、构建哈夫曼树CreateHuffmanTree、创建哈夫曼编码字典CreateHuffmanDict、哈夫曼编码StringToHuffmanCode以及哈夫曼编码的解码ToHuffmanCode。
1)获取权值数组GetWeightArray(string str)
将文本信息中的每种字符出现的次数进行统计,并将其作为哈夫曼树的权值。
2)构建哈夫曼树Create Huffman Tree(Node[] sources)
按“左走0,右走1”的原则创建哈夫曼树。
3)创建哈夫曼编码字典Create Huffman Dict(Node h Tree)
创建哈夫曼编码字典,在数组中实现“左走0,右走1”。
4)哈夫曼编码String To Huffman Code(out Dictionary<char, string> key, string str)
由创建的哈夫曼树,得到哈夫曼编码。
5)哈夫曼编码的解码To Huffman Code(string source, Dictionary<char, string> hfdict)
将哈夫曼编码还原成哈夫曼树,得到每个字符出现的次数,将其还原成原文本信息。
4.2 S-DES算法的实现
S-DES算法中涉及的核心算法为P10置换;P8置换;IP函数;FK函数;SW函数;IP-1函数。
1)P10置换p10(string miyao)
2)P8置换p8(stringls1, string ls2)
3)IP函数IP(stringmingwen)
mingwen = mingwen + numbers[1] + numbers[5] + numbers[2] + numbers[0] + numbers[3] + numbers[7] + numbers[4] + numbers[6];
4)FK函数fk(stringmingwen, string key)
5)SW函数sw(string mingwen)
mingwen = mingwen + numbers[4] + numbers[5] + numbers[6] + numbers[7] + numbers[0] + numbers[1] + numbers[2] + numbers[3];
6)IP-1函数NIP(string mingwen)
mingwen = mingwen + numbers[3] + numbers[0] + numbers[2] + numbers[4] + numbers[6] + numbers[1] + numbers[7] + numbers[5];
5 结束语
该混和加密算法结合了Huffman算法的平均最短编码和S-DES算法的分组加密,能对文本信息进行有效的加密,由于加密的过程是由两次加密算法混合组成,所以增强了密文的安全性。
但Huffman算法在统计文本信息中字符出现的次数,并将该次数作为权值时,降低了程序的运行效率。且S-DES算法每次运算8bit数,增加了循环次数,也降低了程序的运行效率。
本文主要是对TXT文件中的字符进行混合加密,对于其他各种文件,如二进制文件等,虽然能够进行有效的加密,但是其安全性和运行效率无法估计,这也是后续研究中应该加以改善的。
摘要:在对比现有的加密软件和古典密码学常见的加密算法后,结合文本加密的现状及发展趋势,该文将基于动态Huffman编码和S-DES算法相结合,弥补两者的缺点,达到对文本信息的最佳加密及解密效果。
基于DES的加密算法 篇9
关键词:FPGA,3DES算法,VHDL,网络通信安全
0 引 言
随着网络通信技术的发展,信息安全问题越来越为人们关注。密码技术[1]作为信息安全的关键技术,正在发挥着重大作用。现代分组加密算法(如DES[2],3DES[3,4],AES)既可以用硬件也可以用软件来实现。软件加密是通过在主机上运行加密软件来实现加密功能,除占用主机资源外,其运算速度较硬件加密要慢,在某些高速数据传输的场合无法满足要求,安全性也较差;而硬件加密是通过独立于主机系统外的硬件加密设备实现的,所有关键数据的存储、运算都在内部通过硬件实现,不占主机资源,速度快,安全性较高,稳定性和兼容性也比较好。虽然DES(56位密钥)已经被证实是不安全的算法,但是3DES(168位密钥)在增强其算法复杂性来保障其安全性的同时,底层以DES算法为基础可以使原系统不作大的改动,然而3DES的根本缺点在于用软件实现速度比较慢,此外,由于DES、3DES加密算法经常采用移位、异或、换位等位操作,因此硬件实现更具有其特别的优势。因而用硬件实现并在硬件平台上优化3DES这种比较复杂的算法成为一个新的研究热点。而FPGA [5](现场可编程门阵列)作为设计数字电路系统的主要设计方式,既继承了ASIC[5]的大规模、高集成度、高可靠性的优点,又克服了普通ASIC设计周期长、投资大、灵活性差的缺点。因此,本文对3DES加密算法的FPGA实现进行了研究和设计。
1 3DES算法原理
DES是一种分组乘积加密算法,综合运用了置换、代替、代数等多种密码技术。它是用64位的密钥对64位的明文加密,通过对64位的明文分组进行操作,经一个初始置换,将明文分成左半部分和右半部分,然后进行16轮完全相同的运算,最后经过一个末置换便得到64位密文。每一轮的运算包含扩展置换、S盒代换、P盒置换和两次异或运算,另外每一轮中还有子密钥。其中64位密钥中每8位有一奇偶校验位,不参与运算,有效密钥只有56位。其算法结构示意图如图1所示。
3DES以DES为基本模块,通过组合分组方法对64位明文分组进行加密。3DES具体实现过程用公式表达为3DES的加密过程描述如下公式所示:
3DES的解密过程描述如下公式所示:
式中:密钥为K;64位明文为X;64位密文为C;EK(x)和DK(X)分别表示DES算法对64位的分组数据进行加密和解密。3DES加密算法加密和解密流程图如图2所示:
2 3DES算法的FPGA设计实现
2.1 设计目标
3DES密码算法的硬件实现结构一般有两种:第一种是循环迭代结构设计,这种结构设计是3DES硬件实现方式面积最小但速度最慢的方式。第二种是由3个DES模块级联,形成流水线结构。这种方法充分利用现有的硬件资源,适合模块化开发,节省很多重新编写代码和验证的时间,运算的速度和已有的DES实现有关,最少为三级流水线(DES实现本身不带流水线)。如果DES设计为n级流水线,那么3DES即为n×3级流水线,整个3DES算法的面积约为DES的3倍。48级流水线结构设计是该结构加密速度最快的3DES实现方法。
该设计的主要重点是在尽可能地减少资源消耗的情况下又能提高系统速度。因此采用3个DES模块级联3级流水线结构。每个DES作为一级流水线,共3级流水线,以提高3DES加密算法的速度,同时减少多级流水线占用更多的电路面积。为此,本文采用状态机控制和三级流水线技术等关键技术,模块化设计方法,在给定资源占用情况下进行一系列优化设计,实现系统更高性能。
2.2 密钥生成器的设计
在设计中,密钥生成器的设计是独立于DES轮函数运算实现的。该模块在控制信号的控制下,实现初始密钥的接收,并产生运算模块每次迭代所需要的子密钥功能,以及每轮子密钥与其轮数的对应问题。以往设计采用3组密钥分时复用1个密钥产生模块使得系统整体加解密速度不如并行复制多个操作模块的快。为了尽可能地提高系统的性能,采用并行复制3个密钥模块,减少了每组密钥分时等待密钥模块的时间和每轮运算等待子密钥的时间。子密钥生成采用直接赋值提前生成的方法,通过一个计数器来控制轮数,选择相应的子密钥。所有子密钥全部并行同时生成,事先准备好,由子密钥选择信号keyselect来选择,送到相应的运算模块中。轮密钥选择问题:直接产生的16个子密钥存储于16个48位寄存器中,可以用于加密,也可用于解密,顺序根据加解密功能信号function_select的不同采用K的顺序也相应不同。加密时,keyselect的值从“0”到“F”变化,key_out子密钥输出顺序是K1…K16;解密时,keyselect的值从“F”到“0”变化,key_out子密钥输出顺序是K16…K1。下面是该功能实现的代码:
if func_select = ′1′ then
KeySelect <= "0000";
else
KeySelect <= "1111";
end if;
if func_select = ′1′ then
KeySelect <= KeySelect + ′1′;
else
KeySelect <= KeySelect - ′1′;
end if;
RounderCounter <= RounderCounter+′1′;
2.3 S盒子的设计
S盒的设计是采用FPGA内部自带的ROM来实现的,这样既可避免直接使用大量的触发器或者锁存器暂存数值,减少了芯片面积,又可降低芯片的功耗,同时系统最高时钟频率也比较高,数据吞吐量也较大。
系统的设计中,将8个S盒作为8个模块来设计,程序结构完全一样,都采用一个CASE语句枚举64种情况选择实现,只是每个S盒替代的规则不同而已。
如图3所示,在Virtex FPGA器件上,把每个S盒的6位输入作为地址,其{2:5}位输入LUT决定列的输出,{6},{1}位分别输入选择器F5,F6,决定行的输出,这样便通过6位输入到4位输出的LUT实现S盒的设计。这种实现方法有效地利用了Virtex FPGA现有的硬件资源,提高了S盒的处理速度。
2.4 DES模块设计
该模块完成16轮循环运算,其过程复杂,相应控制也难以实现。因此,采用有限状态设计实现,完成了子密钥与相应轮数匹配控制以及数据处理过程控制。
所谓状态机就是事物存在状态的一种综合描述,说明任意两个状态之间的转变条件。每一个控制步或进程代表一种状态,与每一控制步相关的转移条件决定次态的状态和输出。其程序结构简单,控制灵活;能有效消除毛刺现象;进程并行执行,能有效提高运算速度;使用完整的容错技术,具有极高的可靠行;生成的硬件电路简单,进而大大节省了硬件资源。
该状态机共设计了waitkey(等待密钥输入状态)、waitdata(等待明/密文数据输入状态)、initialround(初始轮状态)、reapeatround(重复轮状态)、finalround(最后轮状态)五个状态类型,同时使用一个4位计数器roundcounter记录轮数。图4为16轮运算与其子密钥选择状态转换图。
2.5 流水线结构的设计
流水线设计就是将组合逻辑系统地分割,并在各个部分(分级)之间插入寄存器,并暂存中间数据的方法,目的是提高数据吞吐率(提高处理速度)。
基于性能和资源占用情况的综合考虑,采用了3级流水形式,每个DES作为一级流水。在每级DES中实现16轮迭代运算。设计密钥产生模块提前生成16轮迭代所需的子密钥。并由FSM控制16轮子密钥与循环迭代次数的匹配。这样系统从第一个数据块开始加密(或解密)起,经48个周期的延迟后,从第49个周期开始,以后每16个时钟周期后都有一个加解密后的64位数据输出。
2.6 整体结构设计
通过对3DES算法的研究分析,采用模块化设计方法构建了3DES算法的整体结构。它主要由下面各个部分组成,FSM、GETEY和3个DES运算模块形成3级流水线结构构成整个3DES系统的运算模块。其中,FSM(有限状态机)负责所有状态转换,是整个电路的控制核心。GETKEY在控制信号的控制下,实现初始密钥的接收,产生运算模块每次迭代所需要的子密钥并存储。DES1,DES2,DES3根据状态控制处理进程,完成对数据的加解密的流水操作。系统整体结构如图5所示。
3 仿真结果
对系统设计完成后,要对系统进行仿真验证,尽早发现设计缺陷。本文仿真验证采用自底向上的方法,把验证分成模块级仿真和系统级仿真。该部分只给出系统级仿真结果图。为了更直观的从图中看出仿真结果,输入3个初始密钥都为:ox00 00 00 00 00 00 00 00,data_in[0:63]输入为:ox80 00 00 00 00 00 00 00,如图6所示。从图中可以看出各种信号以及数据输入情况,对输入明文进行加密操作,在第49个周期的时候输出密文。在图7中,当输出信号out_ready为真时,输出密文为:ox95 F8 A5 DD 31 D9 00。仿真结果正确。验证系统解密操作时,把加密时输出的密文作为解密时的明文,密钥不变,输出结果为加密时的明文,仿真结果同样正确。图略。
4 结 语
该加密算法的实现采用Xilinx公司的Virtex4系列的xc4vlx25-12-ff676器件作为平台,在ISE10.1下对VHDL代码进行编译、综合、适配和仿真。分析综合结果,系统时钟的最高工作频率为215.165 MHz,最短建立时间为3.454 ns,最长保持时间为3.793 ns。系统设计考虑了面积与速度两个因素,最终达到了速度与面积的综合,可广泛应用于网络安全产品及其他安全设备中。
参考文献
[1]靳冰赖,宏慧,贾玉珍.DES加密算法安全分析[J].网络与安全技术,2007(2):67-69.
[2]潘文明.DES加密芯片的研制及实现[D].广州:暨南大学,2008.
[3]党志军,张国杰.高速3_DES算法IP核的设计与实现[D].郑州:解放军信息工程大学,2007.
[4]周学广,刘艺.信息安全学[M].2版.北京:机械工业出版社,2008.
[5]李云松,宋锐,雷杰,等.Xilink FPGA设计基础(VHDL版)[M].西安:西安电子科技大学出版社,2008.