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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

DES加密算法JAVA实现Word下载.docx

1、在近代密码学上值得一提的大事有两件:一是1977 年美国国家标准局正式公布实行了美国的数据加密标准DES),公开它的加密算法,并批准用于非机密单位及商业上的保密通信。密码学的神秘面纱从此被揭开。二是Diffie和Hellman联合写的一篇文章“密码学的新方向”,提出了适应网络上保密通信的公钥密码思想,拉开了公钥密码研究的序幕。DESData Encryption Standard)是IBM公司于上世纪1977年提出的一种数据加密算法。在过去近三十年的使用中,还无法将这种加密算法完全、彻底地破解掉。而且这种算法的加解密过程非常快,至今仍被广泛使用,被公认为安全的。虽然近年来因为硬件技术的飞速发展

2、,破解DES已经不是一件难事,但学者们似乎不甘心让这样一个优秀的加密算法从此废弃不用,于是在DES的基础上有开发了双重DESDoubleDES,DDES)和三重DEST riple DES,TDES)。在国内,随着三金项目尤其是金卡项目的启动,DES 算法在POS、ATM、磁卡及智能卡。其中Li和Ri分别表示第i轮的左半部和右半部。f(是运算函数,Ki是长为48位的子密钥。子密钥K1,K2,,K16是根据56比特的密钥K计算而来的。对比特串R16L16使用逆置换IP-1得到密文。在DES被提出时,曾出现过很多批评,其中之一就是针对S盒。DES里的所有计算,除了S盒,全是线性的也就是说,计算两个

3、输出的异或与先将两个对应输入异或再计算其输出是相同的。作为非线性部分,S盒对密码体制的安全性至关重要。在DES刚提出时就有人怀疑S盒里隐藏了“陷门宣布一台造价不到25万美元、为特殊目的设计的“DES破译机”破译了DES时,DES终于被清楚地证明是不安全的。三、DES算法加解密原理 DES算法由加密、子密钥和解密的生成三部分组成。现将DES算法介绍如下。加密 DES算法处理的数据对象是一组64比特的明文串。设该明文串为m=m1m2m64(mi=0或1。明文串经过64 比特的密钥K来加密,最后生成长度为64比特的密文E。其加密过程图示如下:DES算法加密过程 对DES算法加密过程图示的说明如下:待

4、加密的64比特明文串m,经过IP置换经过变换f(R0,K1做不进位二进制加法运算的结果,L16是R15的直接赋值。R16与L16合并成64位的比特串。值得注意的是R16一定要排在L16前面。R16与L16合并后成的比特串,经过置换IP-1:它的功能是将32比特的输入再转化为32比特的输出。其过程如图所示:f变换说明:输入Ri-1(32比特经过变换E,合并后又成为32比特。该32比特经过P变换压缩置换P)后,其下标列表如下:经过P变换后输出的比特串才是32比特的fRi-1,Ki).S盒的变换过程:任取一S盒。见图:在其输入b1,b2,b3,b4,b5,b6中,计算出x=b1*2+b6,y=b5+

5、b4*2+b3*4+b2*8,再从Si表中查出x 行,y列的值Sxy。将Sxy化为二进制,即得Si盒的输出。S表如图所示)P:16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25 以上是DES算法加密原理 加密过程实现(JAVA主要源代码)输入64位明文串,经过IP置换:for(i=0。i Mi=timeDataIPi-1。迭代(因为各次迭代的方法相同只是输入输出不同,因此以任意一次为例:首先进行S盒的运算。输入32位比特串,经过E变换,由32位变为48位:i REi=R0E

6、i-1。与keyarraytimesi按位作不进位加法运:REi=REi+keyarraytimesi。if(REi=2 REi=0。48位分成8组:i for(j=0。j Sij=RE(i*6+j。经过S盒,得到8个数:sBoxDatai=S_Boxi(Si0 +Si5(Si1 +(Si2 +(Si3 +Si4。将8个数变换输出二进制:for(j =0。j sValue(i *4 +3-j =sBoxDatai%2。sBoxDatai =sBoxDatai /2。经过P变换:RPi=sValuePi-1。至此,S盒运算完成 左右交换:L1i=R0i。R1i=L0i+RPi。Ri为Li-1与f

7、(R,K进行不进位二进制加法运算结果:if(R1i=2 R1i=0。各次迭代类似,可以依此类推。2、子密钥的生成64比特的密钥生成16个48比特的子密钥。其生成过程见图:子密钥生成过程 具体解释如下:64比特的密钥K,经过PC-1置换A)后,生成56比特的串。其下标如表所示:PC-1 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12

8、 4 该比特串分为长度相等的比特串C0和D0。然后C0和D0分别循环左移1位,得到C1和D1。C1和D1合并起来 生成C1D1。C1D1经过PC-2的数值是不同的。具体见下表:迭代顺序 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 子密钥的生成JAVA源代码):输入64位K,经过PC-1变为56位:i K0i=keyPC_1i-1。56位的K0,均分为28位的C0,D0。C0,D0生成K1和C1,D1 for(i=0。i /循环左移一位c1i=c0i+1。d1i=d0i+1。c127=c0

9、0。d127=d00。else if(offset=2 for(i=0。i /循环左移两位c1i=c0i+2。d1i=d0i+2。c126=c00。d126=d00。c127=c01。d127=d01。i ki=c1i。/生成子密钥ki ki+28=d1i。注意:生成的子密钥不同,所需循环左移的位数也不同。在编程中,生成不同的子密钥应以上述offset表为准。3解密 DES的解密过程和DES的加密过程完全类似,只不过将16圈的子密钥序列K1,K2K16的顺序倒过来。即第一圈用第16个子密钥K16,第二圈用K15,其余类推。第一圈:加密后的结果 L=R15,R=L15f(R15,K16f(R15

10、,K16=L15 同理R15=L14f(R14,K15,L15=R14。同理类推:得L=R0,R=L0。其程序源代码与加密相同。四、加解密算法的实现 1 软件版本:jdk1.6.0,JCreator Pro v3.5.013 汉化版2 平台:Windows XP 3 源代码:public class DesUtil byte bytekey。public DesUtil(String strKey this.bytekey=strKey.getBytes(。/声明常量字节数组 private static final int IP=58,50,42,34,26,18,10,2,60,52,44

11、,36,28,20,12,4,62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7。/64 private static final int IP_1=40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31,38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29,36,4,44,12,52,20,60,28

12、,35,3,43,11,51,19,59,27,34,2,42,10,50,18,58,26,33,1,41,9,49,17,57,25。/64 private static final int PC_1=57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4。/56 private static final int PC_2=14,

13、17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32。/48 private static final int E=32,1,2,3,4,5,4,5,6,7,8,9,8,9,10,11,12,13,12,13,14,15,16,17,16,17,18,19,20,21,20,21,22,23,24,25,24,25,26,27,28,29,28,29,30,31,32,1。/48 pr

14、ivate static final int P=16,7,20,21,29,12,28,17,1,15,23,26,5,18,31,10,2,8,24,14,32,27,3,9,19,13,30,6,22,11,4,25。/32 private static final int S_Box=/S-盒/S_Box1 14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7,0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8,4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0,15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13 ,/S_Box2 15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10,3,13,4

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

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