DES加密算法详解.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DES加密算法详解

DES加密算法详解- - ?????????????????????????????????????? 对加密解密一直挺喜欢的,可还是没有怎么好好学习过,希望这是一个好的开始。 在网上搜了一下关于DES的说明,发现有些杂乱,所以还是有必要整合一下。 写了一点代码,还没有完成,不过,还不能编译通过,^_^ 刚看了一下,发现还是说得够模糊的,有机会再整理一下。 昏倒,一直运行不对,今天才仔细查出来,原来问题是出在Des_Data_P(const _b32 input, _b32 output), 我的output用了传值调用,失败呀。应该是Des_Data_P(const _b32 input, _b32 output) DES算法的入口参数有三个: ?Key, Data, Mode Key 为64bit密钥, Data为64bit数据,Mode为加密还是解密。 DES算法的过程: 1. 对输入的密钥进行变换。 ??? 用户的64bit密钥,其中第8, 16, 24, 32, 40, 48, 56, 64位是校验位, 使得每个密钥都有奇数个1。所以密钥事实上是56位。对这56位密钥进行如下表的换位。 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, 表的意思是第57位移到第1位,第49位移到第2位,...... 以此类推。变换后得到56bit数据,将它分成两部分,C[0][28], D[0][28]。 2. 计算16个子密钥,计算方法C[i][28] D[i][28]为对前一个C[i-1][28], D[i-1][28]做循环左移操作。16次的左移位数如下表: ?1,? 2,? 3,? 4,? 5,? 6,? 7,? 8,? 9, 10, 11, 12, 13, 14, 15, 16?? (第i次) ?1,? 1,? 2,? 2,? 2,? 2,? 2,? 2,? 1,?? 2,? 2,?? 2,?? 2,?? 2,?? 2,? 1??? (左移位数) 3. 串联计算出来的C[i][28] D[i][28] 得到56位,然后对它进行如下变换得到48位子密钥K[i][48] 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, 表的意思是第14位移到第1位,第17位移到第2位,以此类推。在此过程中,发现第9,18,22,25, 35,38,43,54位丢弃。 4. 对64bit的明文输入进行换位变换。换位表如下: 58, 50, 12, 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 表的意思就是第一次变换时,第58位移到第1位,第50位移到第2位,...... 依此类推。得到64位数据,将这数据前后分成两块L[0][32], R[0][32]。 5. 加密过程,对R[i][32]进行扩展变换成48位数,方法如下, 记为E(R[i][32]) 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, 6. 将E

文档评论(0)

xjj2017 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档