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

上传人:b****9 文档编号:13062017 上传时间:2022-10-04 格式:DOCX 页数:16 大小:72.20KB
下载 相关 举报
DES加密算法JAVA实现Word下载.docx_第1页
第1页 / 共16页
DES加密算法JAVA实现Word下载.docx_第2页
第2页 / 共16页
DES加密算法JAVA实现Word下载.docx_第3页
第3页 / 共16页
DES加密算法JAVA实现Word下载.docx_第4页
第4页 / 共16页
DES加密算法JAVA实现Word下载.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

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

《DES加密算法JAVA实现Word下载.docx》由会员分享,可在线阅读,更多相关《DES加密算法JAVA实现Word下载.docx(16页珍藏版)》请在冰豆网上搜索。

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

在近代密码学上值得一提的大事有两件:

一是1977年美国国家标准局正式公布实行了美国的数据加密标准DES),公开它的加密算法,并批准用于非机密单位及商业上的保密通信。

密码学的神秘面纱从此被揭开。

二是Diffie和Hellman联合写的一篇文章“密码学的新方向”,提出了适应网络上保密通信的公钥密码思想,拉开了公钥密码研究的序幕。

DESDataEncryptionStandard)是IBM公司于上世纪1977年提出的一种数据加密算法。

在过去近三十年的使用中,还无法将这种加密算法完全、彻底地破解掉。

而且这种算法的加解密过程非常快,至今仍被广泛使用,被公认为安全的。

虽然近年来因为硬件技术的飞速发展,破解DES已经不是一件难事,但学者们似乎不甘心让这样一个优秀的加密算法从此废弃不用,于是在DES的基础上有开发了双重DESDoubleDES,DDES)和三重DESTripleDES,TDES)。

在国内,随着三金项目尤其是金卡项目的启动,DES算法在POS、ATM、磁卡及智能卡。

其中Li和Ri分别表示第i轮的左半部和右半部。

f(是运算函数,Ki是长为48位的子密钥。

子密钥K1,K2,,K16是根据56比特的密钥K计算而来的。

对比特串R16L16使用逆置换IP-1得到密文。

在DES被提出时,曾出现过很多批评,其中之一就是针对S盒。

DES里的所有计算,除了S盒,全是线性的也就是说,计算两个输出的异或与先将两个对应输入异或再计算其输出是相同的。

作为非线性部分,S盒对密码体制的安全性至关重要。

在DES刚提出时就有人怀疑S盒里隐藏了“陷门宣布一台造价不到25万美元、为特殊目的设计的“DES破译机”破译了DES时,DES终于被清楚地证明是不安全的。

三、DES算法加解密原理DES算法由加密、子密钥和解密的生成三部分组成。

现将DES算法介绍如下。

加密DES算法处理的数据对象是一组64比特的明文串。

设该明文串为m=m1m2m64(mi=0或1。

明文串经过64比特的密钥K来加密,最后生成长度为64比特的密文E。

其加密过程图示如下:

DES算法加密过程对DES算法加密过程图示的说明如下:

待加密的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+b4*2+b3*4+b2*8,再从Si表中查出x行,y列的值Sxy。

将Sxy化为二进制,即得Si盒的输出。

S表如图所示)P:

1672021291228171152326518311028241432273919133062211425以上是DES算法加密原理加密过程实现(JAVA主要源代码)输入64位明文串,经过IP置换:

for(i=0。

iMi=timeDataIPi-1。

迭代(因为各次迭代的方法相同只是输入输出不同,因此以任意一次为例:

首先进行S盒的运算。

输入32位比特串,经过E变换,由32位变为48位:

iREi=R0Ei-1。

与keyarraytimesi按位作不进位加法运:

REi=REi+keyarraytimesi。

if(REi=2REi=0。

48位分成8组:

ifor(j=0。

jSij=RE(i*6+j。

经过S盒,得到8个数:

sBoxDatai=S_Boxi(Si0+Si5(Si1+(Si2+(Si3+Si4。

将8个数变换输出二进制:

for(j=0。

jsValue(i*4+3-j=sBoxDatai%2。

sBoxDatai=sBoxDatai/2。

经过P变换:

RPi=sValuePi-1。

至此,S盒运算完成左右交换:

L1i=R0i。

R1i=L0i+RPi。

Ri为Li-1与f(R,K进行不进位二进制加法运算结果:

if(R1i=2R1i=0。

各次迭代类似,可以依此类推。

2、子密钥的生成64比特的密钥生成16个48比特的子密钥。

其生成过程见图:

子密钥生成过程具体解释如下:

64比特的密钥K,经过PC-1置换A)后,生成56比特的串。

其下标如表所示:

PC-157494133251791585042342618102595143352719113605244366355473931231576254463830221466153453729211352820124该比特串分为长度相等的比特串C0和D0。

然后C0和D0分别循环左移1位,得到C1和D1。

C1和D1合并起来生成C1D1。

C1D1经过PC-2的数值是不同的。

具体见下表:

迭代顺序12345678910111213141516左移位数1122222212222221子密钥的生成JAVA源代码):

输入64位K,经过PC-1变为56位:

iK0i=keyPC_1i-1。

56位的K0,均分为28位的C0,D0。

C0,D0生成K1和C1,D1for(i=0。

i/循环左移一位c1i=c0i+1。

d1i=d0i+1。

c127=c00。

d127=d00。

elseif(offset=2for(i=0。

i/循环左移两位c1i=c0i+2。

d1i=d0i+2。

c126=c00。

d126=d00。

c127=c01。

d127=d01。

iki=c1i。

/生成子密钥kiki+28=d1i。

注意:

生成的子密钥不同,所需循环左移的位数也不同。

在编程中,生成不同的子密钥应以上述offset表为准。

3解密DES的解密过程和DES的加密过程完全类似,只不过将16圈的子密钥序列K1,K2K16的顺序倒过来。

即第一圈用第16个子密钥K16,第二圈用K15,其余类推。

第一圈:

加密后的结果L=R15,R=L15f(R15,K16f(R15,K16=L15同理R15=L14f(R14,K15,L15=R14。

同理类推:

得L=R0,R=L0。

其程序源代码与加密相同。

四、加解密算法的实现1软件版本:

jdk1.6.0,JCreatorProv3.5.013汉化版2平台:

WindowsXP3源代码:

publicclassDesUtilbytebytekey。

publicDesUtil(StringstrKeythis.bytekey=strKey.getBytes(。

/声明常量字节数组privatestaticfinalintIP=58,50,42,34,26,18,10,2,60,52,44,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。

/64privatestaticfinalintIP_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,35,3,43,11,51,19,59,27,34,2,42,10,50,18,58,26,33,1,41,9,49,17,57,25。

/64privatestaticfinalintPC_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。

/56privatestaticfinalintPC_2=14,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。

/48privatestaticfinalintE=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。

/48privatestaticfinalintP=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。

/32privatestaticfinalintS_Box=/S-盒/S_Box114,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_Box215,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10,3,13,4

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 动态背景

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

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