DES对称加密(通用7篇)
DES对称加密 篇1
1 引言
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].北京:清华大学出版社.
[4](英)夏普著.Visual C#2010从入门到精通[M].北京:清华大学出版社.
DES数据加密技术与应用 篇2
DES属于对称加密算法, 即加密和解密用使用相同密钥, 密钥既用于加密又用于解密, 是目前最常用的加密算法之一。本文将介绍DES数据加密的事先原理, 并分析其存在安全性和应用领域, 最后对DES算法进行展望。
二、DES算法原理
1、DES算法的基本思想
DES对64位明文进行分组计算。首先通过初始置换将明文分组分成左半部分 (L0) 和右半部分 (R0) , 各为32位长度。然后将R0与子密钥K1进行F函数运算, 输出32位序列, 再与L0进行异或操作得到R1, 如此经过16轮运算后, 将左、右半部序列合在一起, 最后经过末置换 (初始置换的逆置换) , 完成对对数据的加密, 算法流程参见图1。
2、子密钥的生成
子密钥的产生假如将64位密钥进行密钥置换, 不考虑每个字节的第8位, DES密钥由64位减至56位, 56位密钥被分成两部分, 前28位为C0, 后28位为D0。C0=K57K49K41…K52K44K36, D0=K63K55K47…K20K12K4。
接着, 根据轮数, Ci和Di分别经过LSi循环左移1位或2位。16次循环左移的位数依据下列规则进行:
循环左移位数1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1
经过循环左移得到的Ci、Di经过压缩置换即得到子密钥Ki (i=1, 2, …, 16) 。压缩置换也称作置换选择, 位就是从56位中选出48位, 表2定义了压缩置换。例如, 处在第33位位置的那一位在输出时移到了第35的位置, 而处在第18位位置的那一位被略去了。
三、DES算法安全性问题
1、DES算法密钥的长度
到目前位置, 最有效的破解DES算法的方法是穷举搜索法, 那么56位长的密钥总共要测试256次, 如果每100毫秒可以测试1次, 那么需要7.2×1015秒, 大约是228, 493, 000年。但是, 仍有学者认为在可预见的将来用穷举法寻找正确密钥已趋于可行, 所以若要安全保护10年以上的数据最好不用DES算法。
2、弱密钥问题
DES算法中存在12个半弱密钥和4个弱密钥。由于生成子密钥的过程中密钥被分成了2个部分, 假如这2个部分分成了全0或全1, 那么每轮产生的子密钥都是相同的, 当密钥是全0或全1, 或者一半是1或0时, 就会产生弱密钥或半弱密钥, 此时DES算法安全性就会变差。
四、DES算法的应用
自DES算法颁布之后引起了学术界和企业界的广泛重视。许多厂家很快生产出实现DES算法的硬件产品, 广大用户在市场上买到高速而又廉价的DES硬件产品之后, 开始用硬件形式加密重要数据, 从而大大推广了DES加密使用范围。
DES算法的入口参数有3个:Key、Data、Mode。其中Key为8个字节共64位, 是DES算法的工作密钥;Data也为8个字节64位, 是要被加密或被解密的数据;Mode为DES的工作方式, 有两种:加密和解密DES算法是这样工作的:如Mode为加密, 则用Key去把数据Data进行加密, 生成Data的密码形式 (64位) 作为DES的输出结果;如Mode为解密, 则用Key去把密码形式的数据Data解密, 还原为Data的明码形式 (64位) 作为DES的输出结果。
在.NET软件开发系统中, 微软公司提供了DES公用密钥的加密类, 利用它可以自己编制自己的标准DES加密算法。在任何一个单位, 程序员只要设计此程序就能对零散离散文件进行加密, 而如果要和其他单位交换数据, 由于使用的公用算法, 只需要向对方提供密钥及算法说明即可, 使用非常方便。
五、结束语
人类社会已经进入了信息时代, 信息已经成为最重要的资源, 信息的保密问题就越来越重要了。无论是个人信息通信还是电子商务的发展, 都迫切需要保证信息传输的安全以及保证信息的安全。其中, 数据加密就是信息安全的核心。
摘要:数据传输中会遇到被截取、中断、篡改、伪造等安全性问题, 数据加密算法由此而生。DES算法对称加密是目前数据加密的重要技术, 本文将介绍DES数据加密的事先原理, 并分析其存在安全性和应用领域, 最后对DES算法进行展望。
关键词:DES算法,对称密钥,数据加密
参考文献
[1]曾庆海、马中军、王艺霖:《引入混沌理论的混凝土中氯离子传输机理研究》, 《四川建筑科学研究》, 2007年第1期。
[2]蔡爱民、查良松:《基于分形理论的安徽省旱、洪涝灾害时序特征分析》, 《安徽农业大学学报》, 2005年第4期。
[3]李晓红、冯欣艳、卢义玉、康勇:《瓦斯等级鉴定的混沌相空间重构预测技术研究》, 《地下空间与工程学报》, 2007年第5期。
[4]许旻、孙赢:《基于混沌和Arnlod置乱的水印预处理》, 《办公自动化》, 2009年第4期。
DES数据加密的FPGA实现 篇3
1 DES加密算法原理
DES算法是在64位密钥控制下由64位数据组成的加密和解密块。解密必须与加密使用相同的密钥,解密过程是加密过程的逆过程。要加密的块首先经过初始IP变换,然后经过复杂的密钥函数计算,最后经过初始变换的IP-1逆变换。加密结构如图1所示。具体的加密过程如下:
64位数据的明文输入后经过IP表初始置换后输出64位的数据。将初始变换后的64位明文分为两部分L和R,长度分别为32位,然后数据通过如图2所示的n轮的处理。每一轮的输入Li-1和Ri-1都来自上一轮的输出,子密钥K由初始密钥K扩展而来。每一轮变化的结构都完全相同。左边一半数据需要执行一次置换操作。而右边一半数据执行一次“轮函数F”,然后与左边一半数据进行异或,最后再将数据的两个部分交换。即
经过16轮后,得到L16和R16,将两部分合起来后,最后再进行初始变换的逆变换,即得到所需的密文。
2 子密钥生成
子密钥的生成流程图如图3所示。
输入的64位密钥经过PC-1变换为56位。然后将此56位密钥平分成分别为28位的C0和D0,将C0和D0分别循环左移一位得到C1和D2,将C1和D1合在一起,再经过PC-2变换,得到子密钥K1,之后再将C1和D1分别循环左移,得到C2和D2,再将C2和D2合在一起,再经过PC-2变换,得到子密钥K2,依此类推,将Ci-1和Di-1分别循环左移,得到Ci和Di,再将Ci和Di合在一起,再经过表PC-2变换,得到48位的子密钥Ki,共经过16次迭代,分别得到每次的子密钥Ki(i=1~16)。子密钥生成的代码示意如下:
在进行循环左移时,每次左移的位数都不一样,左移次数和迭代次数如表1所示。
移位实现代码如下所示:
3 轮函数F计算
F函数的计算过程如图4所示,将32位的数据经过E表扩展置换后形成48位的数据,然后与各轮的子密钥异或,然后通过S盒的非线性变换,S盒共有8个,将48位数据分成8个6位b1b2b3b4b5b6数据,以b1b6为行号,b2b3b4b5b6为列号,输入给每个S盒,分别输出4位数据。这样将F函数扩展出来的48位数据减少为下一轮需要的32位数据。
S盒的置换算法可采用非ROM方式[4]和ROM方式[5]实现,本文使用ROM方式实现,即如下的第4种。具体有以下几种:
1)根据S盒的工作原理,可直接使用输入为六变量,输出为四变量的case语句进行描述,构成一个4位26个存储空间的表。然而这样的语句虽然可读性很强,但综合的效率往往不高,占用资源过多,速度也比较低,使S盒成为系统速度的瓶颈。
2)为了利用FPGA内部的四输入查找表结构,可将S盒的逻辑描述进行重新设计,即先固定2个变量,而使另外4个变量发生变化。在实现时使用双重case语句,外层使用两个变量,对应S盒输入的第1、6位。内层使用4个变量,对应S盒输入的第2、3、4、5位,形成一个6输入、4输出的查找表。该方案可充分利用FPGA的内部资源,提高综合效率,加快算法执行速度。
3)另一种方法就是根据S盒列出每位输出的真值表,用卡诺图进行化简,得到每一位输出的逻辑表达式,再用VHDL语言进行描述。为了节省资源,化简时应考虑多个输出函数之间的乘积项共用问题。采用该方案实现的S盒在资源利用率和速度的提升上都有很大的改进。
4)首先将48位输入分为8组,每组6位。然后用这6位数据查找一个6输入的置换表,该置换表就称为S盒。在实现过程中用一个只读存储器(ROM)来存储所有的置换模式。置换模块将块索引和输入数据结合起来构成一个地址,用来查找S盒中相应的置换值。地址的计算由函数smap执行,这样在置换函数中,分别调用8次smap函数执行8次置换。为了优化数据路径,可将S盒分成8个更小的ROM,这样可以并行访问。置换函数如下所示:
4 仿真结果
DES加密的芯片设计采用VHDL语言进行描述,代码包含des_ip、des_ip_1、key_pc_1、des_e、key_pc_2、des_p共6个部件以及key_rotate和substitute两个函数,依次分别完成初始变换、最终逆变换、64位密钥到56位的压缩转换、32位到48位的压缩置换、48位到56位的置换、32位到32位的变换以及子密钥的移位运算和S盒轮函数运算。代码在Quartus II开发环境中编译完成,以Altera公司Cyclone EP1C12F324C6为目标器件,逻辑综合结果表明系统共占用3968个逻辑单元(LE)。
假设需要加密的明文分别为4E6F772069732074、68652074696D6520、666F7220616C6C20,所用密钥为0123456789ABCDEF,经过初始置换,16轮迭代加密,逆初始置换,最终的加密密文分别为:3FA40E8A984D4815、6A271787AB8883F9、893D51EC4B563B53,其时序仿真结果如图5所示,仿真结果表明,系统完全实现DES算法的加密功能。
摘要:文章对DES加密算法进行了详细的分析,给出了采用VHDL描述基于FPGA实现DES加密算法系统的设计过程和仿真结果。该算法在密钥生成、S盒的处理中采用了并行处理的方式,克服了传统DES流水线实现方式的缺点,进一步提高了系统的处理速度。
关键词:DES数据加密标准,FPGA,VHDL
参考文献
[1]FIPS 46-3.Data Encryption Standard(DES),National Institute of Standards and Technology(NIST)[S/OL].http://csrc.nist.gov/cryptval/des.htm.
[2]肖新帅,刘洪鹏.基于FPGA的DES算法的并行加密技术[J].科技信息,2010(25).
[3]Biham E.A fast new DES implementation in software[EB/OL].http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.52.5429&rep=rep1&type=pdf.
[4]王简瑜,张鲁国.基于FPGA实现DES算法的性能分析[J].微计算机信息,2007,23(8).
DES对称加密 篇4
随着信息社会的到来, 人们在享受信息资源所带来的巨大的利益的同时, 也面临着信息安全的严峻考验。数据传输保密的数学模型主要包括数据的加密与解密, 使用加密算法能做到数据加密, 在各种信息安全技术措施中, 硬件结构的安全和操作系统的安全是基础, 密码技术是网络安全与保密的核心和关键。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.
DES对称加密 篇5
现代密码学根据密钥类型的不同将加密算法分为对称加密算法和公开密钥加密算法[1]。3DES算法[2]作为对称加密算法的一种,被实践证明是一种安全性非常高的加密算法,受到了广泛的应用。加密算法主要通过软件和硬件两种方式来实现,软件的实现方式具有灵活方便的优点,同时也具有加密速度受限制的缺点。采用硬件实现加密算法是实际应用中必须要考虑到的问题,目前经常采用硬件FPGA等来实现[3,4,5],该种实验方式具有处理速度快的特点,但是对系统的复杂度要求较高。嵌入式微处理器具有实现简单,系统集成度高,体积小,易于移植等众多优点[6],因此有必要研发基于嵌入式微处理器的加密算法硬件设备,在此提出一种基于ARM处理器的3DES的硬件实现方法。
1 3DES算法原理
DES是美国国家标准局颁布的数据加密算法,作为世界范围内的公开加密标准已经使用了20多年。随着计算机处理速度的提高,DES算法面临着一些安全威胁,DES采用56位密钥,曾经有人用穷举搜索法对DES进行过密钥搜索攻击。近年来也有人提出了差分和线性攻击方案,该方案的实施必须有超高速计算机的支持。为了增强DES算法应对差分或线性攻击的可能性,人们提出了一系列改进方案,采用增加密钥长度是一种可行的途径。为了增加密钥的长度,可将分组密码进行级联,在不同的密钥作用下,连续多次对一组明文进行加密。其中,最有效的方法是使用三重DES加密,它可使加密密钥长度扩展到128位,在提高加密强度的同时,足以应付目前的各种攻击。
DES是一个分组加密算法,它以64位为分组对数据加密。64位的分组明文序列作为加密算法的输入,经过16轮加密得到64位的密文序列。加密的密钥为64位,实际长度为56位,DES算法的保密性取决于密钥。 DES对64位的明文分组进行操作。首先通过一个初始置换IP,将64位的明文分成各32位长的左半部分和右半部分,该初始置换只在16轮加密过程进行之前进行一次。在经过初始置换操作后,对得到的64位序列进行16轮加密运算,这些运算被称为函数f,在运算过程中,输入数据与密钥结合。经过16轮运算后,左、右两部分合在一起得到一个64位的输出序列,该序列再经过一个末尾置换IP-1,获得最终的加密结果。过程如图1所示。
在每一轮加密过程中,函数f的运算包括以下四个部分:首先进行密钥序列移位,从移位后的56位密钥序列中选出48位;然后通过一个扩展置换将输入序列32位的右半部分扩展成48位,再与48位的轮密钥进行异或运算;再者通过8个S盒将异或运算后获得的48位序列替代成一个32位序列;最后对32位序列应用置换P进行置换变换,得到f的32位输出序列。将函数f的输出与输入序列的左半部分进行异或运算后的结果作为新一轮加密过程输入序列的右半部分,当前输入序列的右半部分作为新一轮加密过程输入序列的左半部分。上述过程重复操作16次,便实现了DES的16轮加密运算。
假设Bi是第i轮计算的结果,则Bi为一个64位的序列,Li和Ri分别是Bi的左半部分和右半部分,Ki是第i轮的48位密钥,且f是实现代换、置换及密钥异或等运算的函数,那么每一轮加密的具体过程为:
undefined
以上操作的详细过程如图2所示。
在3DES加密算法中,加密过程用两个不同的密钥K1和K2对一个分组消息进行三次DES加密。首先使用第一个密钥进行DES加密,然后使用第二个密钥对第一次的结果进行DES解密,最后使用第一个密钥对第二次的结果进行DES加密。
undefined
解密过程首先使用第一个密钥进行DES解密,然后使用第二个密钥对第一次的结果进行DES加密,最后再使用第一个密钥对第二次的结果进行DES解密。
undefined
DES算法的密钥长度是56位,三重DES算法的密钥长度是112位,加密强度显著增强,可以很好地应付各种攻击,目前尚没有可行的攻击方法,应用3DES的加密系统具有很大的实用价值。
2 基于ARM的硬件实现
根据满足3DES算法和一般嵌入式应用的需求,在此设计了一个基于ARM微处理器的嵌入式系统。以三星S3C2410处理器作为系统的核心,用嵌入式Linux作为操作系统。加密的数据可以存放于NAND FLASH等存储介质上,加密后的结果可以通过液晶屏直观地显示出来,实现用户交互。在此设计过程中,难点是图形显示与加密函数的实现。这里通过移植MiniGUI,并在其上开发显示程序,完成了两者之间的联系,实验结果给出了3DES算法的演示效果。整个系统的具体实现如下。
2.1 系统设计框图
系统的核心部分是ARM微处理器,由ARM微处理器和其他一些功能单元构成了完整的嵌入式系统。这里的ARM微处理器选为基于ARM920T核心的S3C2410处理器芯片,其工作频率最高达200 MHz;外围包括64 MB的NAND FLASH 和64 MB的RAM、键盘接口、串口、CPLD译码单元、网络单元、语音单元、LCD及触摸屏等。上述部件共同构建了嵌入式系统的硬件平台。系统核心框架如图3所示。
2.2 操作系统移植
该系统建立在嵌入式Linux系统之上,因此首先要移植Linux系统到ARM处理器上。嵌入式Linux是按照嵌入式操作系统要求设计的一种小型操作系统。由一个内核以及一些根据需要进行定制的系统模块组成。
要构建运行环境,首先移植BootLoader到嵌入式系统中,通过 BootlLoader可以完成对系统板上的主要部件,如CPU,SDRAM,FLASH、串行口等进行初始化。分配内存空间的映射,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统准备好正确的环境。Linux内核采用了稳定版的linux-2.4.18内核。该系统采用Cramfs文件系统,Cramfs被设计为简单较小的只读可压缩文件系统,因此很适合用作嵌入式的文件系统。可以利用工具软件BusyBox和Mkcramfs制作Cramfs文件系统。做好文件系统后下载到开发板上,可以看到Linux系统运行正常[7,8,9]。
2.3 MiniGUI图形界面显示
MiniGUI是针对嵌入式设备,跨操作系统的图形界面支持系统,MiniGUI为实时嵌入式操作系统提供了非常完善的图形及用户界面支持。MiniGUI小巧、灵活且对中文的支持性最好。从技术架构上看,MiniGUI包括几个模块:输入抽象层、输出抽象层、消息模块、窗口模块、图形设备接口模块及MiniGUI组件[10]。
要想使MiniGUI能在本硬件系统上执行,需要移植MiniGUI到S3C2410开发平台。首先,安装交叉编译链,下载相关资源:libminigui-1.3.4.tar.gz,minigui-res-1.3.3.tar.gz,经过相应的配置和交叉编译后就可以把相应的库拷贝到Cramfs文件系统的目录,重新用Mkcramfs工具制作文件系统。对于应用程序,只需要经过交叉编译后执行可执行程序即可。
该系统利用MiniGUI图形界面作为3DES的演示输出。消息机制是MiniGUI运行的基础,应用程序通过接收消息与外界交互。消息由系统和应用程序产生,比如创建窗口时系统会产生MSG_CREAT消息,用户在窗口中的各种操作都会产生一系列相应消息。系统采用了逻辑字体输出,建立逻辑字体的函数为CreateLogFont,设置设备hdc实用指定逻辑字体的函数为SelectFont。用TextOut作为输出,部分主函数如下:
static int 3DESWinProc(HWND hWnd,int message,WPARAM wParam,LPARAM lParam)
{ …
logfontgb24=CreateLogFont(NULL,"song","GB2312",FONT_WEIGHT_BOLD,FONT_SLANT_ROMAN,FONT_SETWIDTH_NORMAL,FONT_SPACING_CHARCELL,FONT_UNDERLINE_NONE,24,0);
case MSG_PAINT:
hdc = BeginPaint (hWnd);
show(hdc);
SelectFont(hdc,logfontgb24);
TextOut (hdc,50,10,"欢迎进入3DES加密系统");
SelectFont(hdc,logfontgb16);
…
TextOut (hdc,50,50,"输入的明文:");
…}
其中调用的show(hdc)是3DES加密算法的具体实现。
实验的简单演示结果如图4所示。实验结果表明,该系统可以实现正确的加密和解密功能,因此可以用基于ARM的嵌入式3DES加密系统进行数据加密,保证信息的安全。采用这种嵌入式微处理器的方法实现起来简单,体积小,易于移植到其他系统中,与采用FPGA的方法相比,实现起来灵活,系统复杂度低。
3 结 语
在此结合嵌入式系统的特点及3DES加密算法,实现了基于ARM的3DES的加密算法的系统设计,详细阐述了3DES算法原理及加密系统的实现过程,并给出了演示结果。此系统具有方便、灵活、体积小,可定制等特点,因此在实际应用中有一定的参考意义。
摘要:3DES算法是一个重要的对称加密算法,被广泛应用于实际系统中。目前并没有针对嵌入式的实现方法,依据3DES算法和一般嵌入式系统需求,详细介绍该系统硬件和软件的设计过程。硬件以三星公司的S3C2410处理器为核心,系统以嵌入式Linux为载体。在此详细阐述开发环境的搭建、Bootloader的架构及功能、内核及文件系统的编译和移植。基于系统硬件和软件设计过程,通过MiniGUI图形界面对3DES算法进行了演示。
关键词:3DES,ARM处理器,嵌入式Linux,MiniGUI
参考文献
[1]Wenbo Mao.Modern Cryptography:Theory and Practice[M].Prentice Hall,2003.
[2]范九伦,张雪锋.密码学基础[M].西安:西安电子科技大学出版社,2008.
[3]王简瑜,张鲁国.基于FPGA实现DES算法的性能分析[J].微计算机信息,2007,23(3):217-219.
[4]张丽娜,陈建华.基于ASIC的有效DES/3DES流水线设计[J].计算机工程,2007,33(2):225-226.
[5]王同庆,陆平.一种3DES算法实现的改进算法[J].计算机应用研究,2003(4):95-96.
[6]张伟.基于ARM的数据加密算法实现[D].南京:南京理工大学,2006.
[7]张杰,吴敏,曹卫华.基于S3C2410的Linux移植[J].微型电脑应用,2005(3):57-59.
[8]李亚锋,欧文盛.ARM嵌入式Linux系统开发[M].北京:清华大学出版社,2007.
[9]刘明博,邓中亮.基于ARM的嵌入式操作系统移植的研究[J].计算机系统应用,2006(11):87-88.
DES对称加密 篇6
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对称加密 篇7
DES (Data Encryption Standard)算法是1977年得到美国政府正式许可的一种用56位密钥来加密64位数据的加密方法。DES是一种特殊类型的迭代密码。简单说来,DES是采用传统的替换和移位的方法加密的分组密码,其算法是对称的,这样既可以用于加密也可以用于解密。
DES用56位密钥对64位的明文数据块进行加密,每次加密可以对64位的明文数据进行16轮编码,经过一系列替换和移位后,输出完全不同的64位密纹数据。DES入口参数有3个:Key、Data、Mode,其中Key为7个字节共56位(另有8位作为奇偶校验位,这样保证了明文与密钥长度的一致性),是DES算法的工作密钥;Data为8位字节64位,是要被加密或解密的数据;Mode为DES的工作方式,由两种:加密、解密。由于DES算法使用64位的标准算法和逻辑运算、运算速度快、密钥产生容易,因此适合当前大多数计算机上用软件方法实现,同时也适用于专用芯片上。
2 DES算法加密过程
DES算法的加密过程大致可以分为4步:初始置换(IP处理)、迭代过程、子密钥产生、逆置换(IP-1处理),功能是将输入的64位数据块经过初始置换按位重新组合,并把输入分为左右两部分(L、R),各部分各有32位,将L1=R0, R1=L0f (R0, K1)。DES加密过程如图1所示。
具体加密过程为:64位密钥经子密钥产生出16个子密钥,为K1、K2…K15、K16,分别供第一次、第二次…第十六次加密迭代使用;64位明文首先经过初始置换IP (Initial Permutation),将数据打乱重新排列并分为左右两半,左边32位构成L0,右边32位构成R0;由加密函数f实现子密钥K1对R0的加密,结果得到32位的数据组(R0, K1), f (R0, K1)再与L0模2相加,又得到一个32位的数据组L0f (R0, K1),以L0f (R0, K1)作为第二次加密迭代的R1,以R0作为第二次加密迭代的L1,至此第一次加密迭代结束;第二次加密迭代至第十六次加密迭代分别用子密钥K1、…K16进行,其过程类同;第十六次加密迭代结束后产生一个64位的数据组,以其左边32位作为R16,右边为L16,两者合并再经过逆初始置换IP-1,将数据重新排列便得到64位的密文。
3 DES加密算法的详细分析
3.1 子密钥的产生
子密钥的产生如图2所示。64位密钥经过置换选择1(见表2)、循环左移、置换选择2(见表3)等变换,产生出16个子密钥。其中置换选择1中并不出现8, 16, 24, 32, 40, 48, 56, 64,所以只有56位有效,其余8位为奇偶校验位。C0、D0是经过置换选择1后的56位的前后28位,C0=K57K49…K44K36, D0=K63K55…K12K4。经过循环左移(移动位数表见表1),将每次迭代得到的Ci、Di经过置换选择2变换得到子密钥Ki (i=1, 2, 3…16)。置换选择2是从56位中选出48位输出。
3.2 加密函数
加密函数是DES算法的核心,f函数在第i次加密迭代中用子密钥Ki对Ri-1进行加密,并在加密过程中使用了唯一的非线性组件———S盒。如图3所示,在第i次迭代加密中选择运算E对32位的Ri-1进行选择和排列后扩展为48位,比原来多出的16位为错位,数据位仍按原输入位,即输入与输出满足线性关系。由E输出的48位按顺序分为8组,每组6位,分别通过8个S子盒后成4位,共32位。
4 DES加密算法在保护Java源程序中的应用
JAVA语言是一种非常适用于网络编程的语言,是一种纯面向对象的、跨平台高级语言,由于Java源代码经过编译以后在JVM (JAVA Virtual Machine JAVA虚拟机)中执行,而JVM又是完全透明的,因此Java类文件能够很容易通过反编译器重新转换成源代码,这样通过JAVA编写的所有文件及算法暴露无遗。为了保护JAVA源程序,常采用: (1) “模糊”类文件,加大反编译器反编译源代码文件的难度; (2) 加密工具对源文件进行加密; (3) 加密类文件,在运行时JVM用定制的类装载器(Class Loader)解密类文件。这些方法对保护源程序都起到一定的作用,但都不能阻止源程序的外泄。
JAVA源程序保护的思想就是为Java提供一个与实现无关的加密函数API,然后把实际的加密函数委托给提供者指定的底层引擎,引擎为类提供了服务提供者接口在Java中实现数据的加密/解密,是使用加密函数API来实现的。Java源程序保护遵循两个原则: (1) 算法的独立性和可靠性; (2) 实现的独立性和相互作用性。算法的独立性是通过定义密码服务类来获得。用户只需了解密码算法的概念,而不用去关心如何实现这些概念。实现的独立性和相互作用性通过密码服务提供器来实现。密码服务提供器是实现一个或多个密码服务的一个或多个程序包。软件开发商根据一定接口,将各种算法实现后,打包成一个提供器,用户可以安装不同的提供器。安装和配置提供器,可将包含提供器的ZIP和JAR文件放在CLASSPATH下,再编辑Java安全属性文件来设置定义一个提供器。
利用DES算法加密的步骤如下:
(1)生成一个安全密钥。在加密或解密任何数据之前需要有一个密钥。密钥是随同被加密的应用程序一起发布的一段数据,密钥代码如下所示。
(2) 加密数据。得到密钥之后, 接下来就可以用它加密数据。密钥加密原始数据如下所示。
(3) 解密数据。运行经过加密的程序时, ClassLoader分析并解密类文件。操作步骤如下所示。
将上述代码与自定义的类装载器结合就可以做到边解密边运行,从而起到保护源代码的作用。
5 结束语
DES加密算法综合运用了置换、代替、代数等多种密码技术,是一种经过乘积后得到的密码。其算法结构采用了置换、代替等基本加密运算构成了轮加密函数,并对其进行了16次迭代。同时,S盒同P置换相互配合,形成了很强的抗差分攻击和抗线性攻击。在20多年的商业密码应用实践中,充分地证明了DES算法是安全的,也没有发现DES算法存在严重地安全隐患,得到了世界范围的公认。
但是DES加密算法不可避免的也存在一些弱点和不足,例如:密钥较短,DES算法采用56密钥,显然是短了点;弱密钥,在DES算法中对加密函数进行16轮迭代中分别使用了不同的子密钥来确保DES算法的强度,但实际上存在一些密钥,由它们产生的16个子密钥是相互重复的;互补对称性,由于DES算法加密、解密过程是相同的,即对密文再加密得到明文,使得破解DES的工作量减少了一半。
摘要:DES算法已被应用于许多需要安全加密的场合 (如信用卡持卡人的PIN加密传输、IC卡与POS间的双向认证、金融数据包校验等) , 深入地分析了DES算法的思想、加密过程及应用, 并指出了DES算法的优势和不足。
关键词:DES算法,算法思想,S盒,JAVA,密钥
参考文献
[1]刘晓星, 胡畅霞, 刘明生.安全加密算法DES的分析与改进[J].微计算机与信息, 2006 (4) .
[2]刘萌铭, 李金海, 刘国丽, 等.计算机安全技术[M].北京:清华大学出版社, 2000.
[3]卢开澄.计算机密码学——计算机网络中的数据保密与安全 (第3版) [M].北京:清华大学出版社, 2003.
【DES对称加密】推荐阅读:
对称和非对称加密算法06-30
对称密钥加密算法06-12
非对称加密技术09-23
基于DES的加密算法08-30
加密不可盲目,有关无线加密协议兼容疑问06-13
加密通信07-15
信息加密07-18
程序加密10-18
文档加密06-22
视频加密07-25