DES加密算法及其在Java中的实现_第1页
DES加密算法及其在Java中的实现_第2页
DES加密算法及其在Java中的实现_第3页
DES加密算法及其在Java中的实现_第4页
DES加密算法及其在Java中的实现_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 作者简介:李玉荣(1973-,女,河南台前人,硕士,濮阳职业技术学院数学与信息工程系讲师,研究方向为计算机应用。DES 加密算法及其在J ava 中的实现李玉荣(濮阳职业技术学院数学与信息工程系,河南濮阳457000摘要:DES 算法已被应用于许多需要安全加密的场合(如信用卡持卡人的PIN 加密传输、IC 卡与POS 间的双向认证、文献标识码:A文章编号:1672-7800(200904-0055-031DES 算法思想DES (Data Encryption Standard 算法是1977年得到美国政府正式许可的一种用56位密钥来加密64位数据的加密方法。DES 是一种特殊类型的迭代密码

2、。简单说来,DES 是采用传统的替换和移位的方法加密的分组密码,其算法是对称的,这样既可以用于加密也可以用于解密。DES 用56位密钥对64位的明文数据块进行加密,每次加密可以对64位的明文数据进行16轮编码,经过一系列替换和移位后,输出完全不同的64位密纹数据。DES 入口参数有3个:Key 、Data 、Mode ,其中Key 为7个字节共56位(另有8位作为奇偶校验位,这样保证了明文与密钥长度的一致性,是DES 算法的工作密钥;Data 为8位字节64位,是要被加密或解密的数据;Mode 为DES 的工作方式,由两种:加密、解密。由于DES 算法使用64位的标准算法和逻辑运算、运算速度快

3、、密钥产生容易,因此适合当前大多数计算机上用软件方法实现,同时也适用于专用芯片上。2DES 算法加密过程DES 算法的加密过程大致可以分为4步:初始置换(IP 处理、迭代过程、子密钥产生、逆置换(IP -1处理,功能是将输入的64位数据块经过初始置换按位重新组合,并把输入分为左右两部分(L 、R ,各部分各有32位,将L 1=R 0,R 1=L 0f (R 0,K 1。DES 加密过程如图1所示。具体加密过程为:64位密钥经子密钥产生出16个子密钥,为K 1、K 2K 15、K 16,分别供第一次、第二次第十六次加密迭代使用;64位明文首先经过初始置换IP (Initial Permutati

4、on ,将数据打乱重新排列并分为左右两半,左边32位构成L 0,右边32位构成R 0;由加密函数f 实现子密钥K 1对R 0的加密,结果得到32位的数据组(R 0,K 1,f (R 0,K 1再与L 0模2相加,又得到一个32位的数据组L 0f (R 0,K 1,以L 0f (R 0,K 1作为第二次加密迭代的R 1,以R 0作为第二次加密迭代的L 1,至此第一次加密迭代结束;第二次加密迭代至第十六次加密迭代分别用子密钥K 1、K 16进行,其过程类同;第十六次加密迭代结束后产生一个64位的数据组,以其左边32位作为R 16,右边为L 16,两者合并再经过逆初始置换IP -1,将数据重新排列便

5、得到64位的密文。3DES 加密算法的详细分析子密钥的产生子密钥的产生如图2所示。64位密钥经过置换选择1(见表2、循环左移、置换选择2(见表3等变换,产生出16个子密钥。其中置换选择1中并不出现8,16,24,32,40,48,56,64,所以只有56位有效,其余8位为奇偶校验位。C0、D0是经过置换选择1后的56位的前后28位,C 0=K 57K 49K 44K 36,D 0=K 63K 55K 12K 4。经过循环左移(移动位数表见表1,将每次迭代得到的C i 、D i 经过置换选择2变换得到子密钥K i (i =1,2,316。置换选择2是从56位中选出48位输出。表1循环左移位数表2

6、2221表2置换选择1574941332517915850423426186355473931231576254463830221466153453729211352820124第8卷%第4期2009年4月V ol .8N o.4A pr .2009软件导刊2009年 表3置换选择2444939563453464250362932加密函数是DES算法的核心,f函数在第i次加密迭代中用子密钥Ki对R i-1进行加密,并在加密过程中使用了唯一的非线S盒。如图3所示,在第i次迭代加密中选择运算E对性组件32位的R i-1进行选择和排列后扩展为48位,比原来多出的16位为错位,数据位仍按原输入位,即输

7、入与输出满足线性关系。由E输出的48位按顺序分为8组,每组6位,分别通过8个S子盒后成4位,共32位。 第4期Byte encryptedClassData =cipher.doFinal (data ;/保存加密后的文件,覆盖原有的类文件。Util.writeFile (filename ,encryptedClassData ;(3解密数据。运行经过加密的程序时,ClassLoader 分析并解密类文件。操作步骤如下所示。/生成一个可信任的随机数源SecureRandom sr=new SecureRandom (;/从密钥文件中获取原始密钥数据Byte rawKeyData =Util.

8、readFile (keyFilename ;/创建一个DESKeySpec 对象DESKeySpec dks=new DESKeySpec (rawKeyData ;/创建一个密钥工厂,然后用它把DESKeySpec 对象转换成ecret Key 对象("DES"SecretKey key=keyFactory.generateSecret (dks ;/Cipher 对象实际完成解密操作Cipher cipher=Cipher.getInstance ("DES"/用密钥初始化Cipher 对象Cipher.init (Cipher.DECRYPT_

9、MODE ,key ,sr ;/获得经过加密的数据Byte encrypted Data =Util.readFile (Filename ;/执行解密操作Byte decryptedData =cipher.doFinal (encryptedData ;/然后将解密后的数据转化成原来的类文件。将上述代码与自定义的类装载器结合就可以做到边解密边运行,从而起到保护源代码的作用。5结束语DES 加密算法综合运用了置换、代替、代数等多种密码技术,是一种经过乘积后得到的密码。其算法结构采用了置换、代替等基本加密运算构成了轮加密函数,并对其进行了16次迭代。同时,S 盒同P 置换相互配合,形成了很强的

10、抗差分攻击和抗线性攻击。在20多年的商业密码应用实践中,充分地证明了DES 算法是安全的,也没有发现DES 算法存在严重地安全隐患,得到了世界范围的公认。但是DES 加密算法不可避免的也存在一些弱点和不足,例如:密钥较短,DES 算法采用56密钥,显然是短了点;弱密钥,在DES 算法中对加密函数进行16轮迭代中分别使用了不同的子密钥来确保DES 算法的强度,但实际上存在一些密钥,由它们产生的16个子密钥是相互重复的;互补对称性,由于DES 算法加密、解密过程是相同的,即对密文再加密得到明文,使得破解DES 的工作量减少了一半。参考文献:1刘晓星,胡畅霞,刘明生.安全加密算法DES 的分析与改进

11、J .微计算机与信息,2006(4.2刘萌铭,李金海,刘国丽,等.计算机安全技术M .北京:清华大学出版社,2000.3卢开澄.计算机密码学计算机网络中的数据保密与安全(第3版M .北京:清华大学出版社,2003.4William STALLINS.密码编码学与网络安全:原理与实践(第2版M .杨明,胥光辉,齐望东,译.北京:电子工业出版社,2001.(责任编辑:卓光Implementation of DES Algorithm in JavaAbstract:DES algorithm has been applied to a number of occasions,which need for security encryption(such as credit card PINencryption transmission,IC card and a two-way authentication between the POS,financial data packets,such as checking,the paper's in -depth analysis of the DES algorithm Thinking,encryption and applicat

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论