网站大量收购闲置独家精品文档,联系QQ:2885784924

DES加解密的JAVA实现.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DES加解密的JAVA实现

一、实验目的 用java编程实现DES加解密算法,以便深入理解DES加解密算法原理。 二、实验条件 1、熟悉JAVA开发环境,能熟练运用JAVA进行程序编写; 2、掌握DES加解密算法知识,了解其算法原理; 3、安装了JAVA环境的计算机。 三、实验原理 1、DES加解密过程: 明文x=x1,x2,…,x64 逆初始置换IP-1 密文y=y1,y2,…,y64 密钥K,64位 32 32 16轮迭代 48位 56位 PC_1 PC_2 初始置换IP 1)、初始置换:对于给定的明文分组x,通过初始置换表IP对x进行置换,得到一个64位的输出串x0,即将输入的第58位换到第一位,第50位换到第2位,...,依此类推,最后一位是原来的第7位。对于所得到64位的输出串x0,记x0 = IP(x) = L0 R0,其中L0为x0的前32位,R0为x0的后32位。 585012342618102605244362820124625446383022146645648403224168574941332517915951433527191136153453729211356355473931231572)、迭代变换:按照规则迭代。规则为: Li=Ri-1 Ri=Li⊕f(Ri-1, Ki) (i=1,2,3,…,16) 经过第1步变换已经得到L0和R0的值,其中符号⊕表示数学运算“异或”,f表示一种置换,由s盒置换构成,Ki是一些由密钥编排函数产生的比特块。 迭代变换利用16轮循环,每轮循环使用子密钥对Li 和Ri进行分别处理,对输出结果进行异或运算和交换操作,以实现数据和密钥的结合 。 3)、逆置换:类似的,经过16轮迭代后所得到的串R16 、L16应用初始置换的逆置换IP-1,获得密文y,即y = IP-1(R16 , L16)。 40848165624643239747155523633138646145422623037545135321612936444125220602835343115119592734242105018582633141949175725 2、密码函数f 函数f的输入是一个32比特串(当前状态的右半部)和子密钥。密钥编排方案(k1,k2,…,k32)由16个48比特的子密钥组成,这些子密钥由56比特的种子密钥k导出。每个ki都是由置换选择而来,子密钥的产生过程后面详述。它主要包含了一个应用S盒的替代以及其后跟随的一个固定置换P。密码函数f是整个加密的关键部分,它包含了如下四个功能:扩展函数E、S盒运算、模2加法、置换函数。其中,E位选择表如下: 3212345656789891011121312131415161516171819202120212223242524252627282928293031321Ki是由密钥产生的48位比特串,具体的算法是:将E的选位结果与?ki作异或操作,得到一个48位输出。分成8组,每组6位,作为8个s 盒的输入。每个S盒输出4位,共32位。S盒的输出作为P变换的输入,p的功能是对输入进行置换,P换位表: 1672021291228171152326518311028241432273919133062211425 3、子密钥的生成过程 在DES中,每一轮迭代都使用了一个轮密钥。轮密钥是从用户输入的密钥k(64位)产生的。实用密钥56位,另8位是奇偶校验位;输出密钥的第8,16,…,64位为奇偶校验位(每一字节的最后一位),这些位的值使得每个字节恰好包含了奇数个1,这样如果输入密钥中某个字节中存在一个错误,奇偶校验可以帮助查到这些错误。密钥生成过程如下: C0 D0 PC-1 LS1 LS1 C11 D1 LS2 LS2 …1 … LS16 LS16 C16 D16 PC-2 PC-2 k k1 k2 首先,对于给定的密钥K,应用PC1变换进行选位,选定后的结果是56位,设其前28位为C0,后28位为D0。PC1选位表如下: 5749413325179158504234261810259514335271911360524436635547393123

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档