欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    DES加密算法JAVA实现.docx

    • 资源ID:562771       资源大小:72.20KB        全文页数:16页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    DES加密算法JAVA实现.docx

    1、目录摘要3一、目的与意义4二、DES概述5三、DES加解密算法原理71. 加密62. 子密钥生成113.解密13四、加解密算法的实现141.软件版本142.平台143. 源代码144. 运行结果24五、总结25【摘要】1973年5月15日,美国国家标准局现在的美国国家标准就是研究所,即NIST)在联邦记录中公开征集密码体制,这一举措最终导致了数据加密标准DES)的出现,它曾经成为世界上最广泛使用的密码体制。DES由IBM开发,它是早期被称为Lucifer体制的改进。DES在1975年3月17日首次在联邦记录中公布,在经过大量的公开讨论后,1977年2月15日DES被采纳为“非密级”使用的一个标

    2、准。最初预期DES作为标准只能使用1015年;然而,事实证明DES要长寿得多。被采纳后,大约每隔5年就被评审一次。DES的最后一次评审是在1999年1月。本文阐述了DES发展现状及对网络安全的重要意义,并在此基础上对DES算法原理进行详细的介绍和分析。通过使用DES算法加解密的具体实现,进一步加深对DES算法的理解,论证了DES算法具有加密快速且强壮的优点,适合对含有大量信息的文件进行加密,同时分析了DES算法密钥过短56位)所带来的安全隐患。【关键词】DES 加密 解密 明文 密文一 、目的与意义随着计算机和通信网络的广泛使用,信息的安全性已经受到人们的普遍重视。信息安全已不仅仅局限于政治,

    3、军事以及外交领域,而且现在也与人们的日常生活息息相关。现在,密码学理论和技术已得到了迅速的发展,它是信息科学和技术中的一个重要研究领域。在近代密码学上值得一提的大事有两件:一是1977 年美国国家标准局正式公布实行了美国的数据加密标准DES),公开它的加密算法,并批准用于非机密单位及商业上的保密通信。密码学的神秘面纱从此被揭开。二是Diffie和Hellman联合写的一篇文章“密码学的新方向”,提出了适应网络上保密通信的公钥密码思想,拉开了公钥密码研究的序幕。DESDataEncryptionStandard)是IBM公司于上世纪1977年提出的一种数据加密算法。在过去近三十年的使用中,还无法

    4、将这种加密算法完全、彻底地破解掉。而且这种算法的加解密过程非常快,至今仍被广泛使用,被公认为安全的。虽然近年来因为硬件技术的飞速发展,破解DES已经不是一件难事,但学者们似乎不甘心让这样一个优秀的加密算法从此废弃不用,于是在DES的基础上有开发了双重DESDoubleDES,DDES)和三重DEST riple DES,TDES)。在国内,随着三金项目尤其是金卡项目的启动,DES算法在POS、ATM、磁卡及智能卡。其中Li和Ri分别表示第i轮的左半部和右半部。f(是运算函数,Ki是长为48位的子密钥。子密钥K1,K2,,K16是根据56比特的密钥K计算而来的。对比特串R16L16使用逆置换IP

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

    6、的密钥K来加密,最后生成长度为64比特的密文E。其加密过程图示如下:DES算法加密过程对DES算法加密过程图示的说明如下:待加密的64比特明文串m,经过IP置换经过变换f(R0,K1做不进位二进制加法运算的结果,L16是R15的直接赋值。IP-1408481656246432397471555236331R16与L16合并成64位的比特串。值得注意的是R16一定要排在L16前面。R16与L16合并后成的比特串,经过置换IP-1:它的功能是将32比特的输入再转化为32比特的输出。其过程如图所示:f变换说明:输入Ri-1(32比特经过变换E,合并后又成为32比特。该32比特经过P变换压缩置换P)后

    7、,其下标列表如下:经过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表如图所示)以上是DES算法加密原理加密过程实现(JAVA主要源代码) 输入64位明文串,经过IP置换:for(i=0。i Mi = timeDataIPi - 1。迭代(因为各次迭代的方法相同只是输入输出不同,因此以任意一次为例: 首先进行S盒的运算。输入32位比特串, 经过E变换,由32位变为

    8、48位:for(i=0。iREi = R0Ei - 1。与keyarraytimesi按位作不进位加法运:REi = REi + keyarraytimesi。if (REi = 2 REi=0。48位分成8组: for(i=0。ifor(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盒

    9、运算完成左右交换:L1i = R0i。R1i = L0i + RPi。Ri为Li-1与f(R,K进行不进位二进制加法运算结果:R1i = L0i + RPi。if (R1i = 2 R1i=0。各次迭代类似,可以依此类推。2、子密钥的生成64比特的密钥生成16个48比特的子密钥。其生成过程见图:子密钥生成过程具体解释如下:64比特的密钥K,经过PC-1置换A)后,生成56比特的串。其下标如表所示:PC-1574941332517915850423426181025951433527191136052443663554739312315762544638302214661534537292113

    10、52820124该比特串分为长度相等的比特串C0和D0。然后C0和D0分别循环左移1位,得到C1和D1。C1和D1合并起来生成C1D1。C1D1经过PC-2的数值是不同的。具体见下表:迭代顺序12345678910111213141516左移位数1122222212222221子密钥的生成JAVA源代码): 输入64位K,经过PC-1变为56位:for(i=0。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 = c00。

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

    12、15,其余类推。第一圈:加密后的结果L=R15, R=L15f(R15,K16f(R15,K16=L15同理R15=L14f(R14,K15, L15=R14。同理类推:得L=R0, R=L0。其程序源代码与加密相同。四 、加解密算法的实现1 软件版本:jdk1.6.0, JCreator Pro v3.5.013 汉化版2 平台:Windows XP3 源代码:public class DesUtil byte bytekey。public DesUtil(String strKey this.bytekey = strKey.getBytes(。/ 声明常量字节数组private stat

    13、ic final int IP = 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 。 / 64private static final int IP_1 = 40

    14、, 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 。 / 64private static final int PC_1 = 57, 49, 41, 33, 25, 17

    15、, 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 。 / 56private static final int PC_2 = 14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21,10, 23, 19, 12, 4, 26, 8, 16, 7,

    16、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 。 / 48private 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,

    17、29, 30, 31, 32, 1 。 / 48private 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 。 / 32private 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,

    18、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, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5 , 0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6,

    19、 9, 3, 2, 15 , 13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9 , / S_Box3 10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8 , 13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1 , 13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7 , 1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12 , /

    20、 S_Box4 7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15 , 13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9 , 10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4 , 3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14 , / S_Box5 2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9 , 14, 11,

    21、2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6 , 4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14 , 11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3 , / S_Box6 12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11 , 10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8 , 9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6 , 4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13 , / S_Box7 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1 , 13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6 , 1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2 ,


    注意事项

    本文(DES加密算法JAVA实现.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开