栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

学习笔记:DES加密算法学习

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

学习笔记:DES加密算法学习

DES是一种分组加密算法,其每个明文分组的长度分为64位,密钥长度为56位,输出的密文长度为64位。(密钥其实是共有64位,其中有8位是奇偶校验位)

DES的大致步骤是:

1、对输入的64位明文进行初始置换

2、在密钥控制下进行16轮迭代(Feistel)

3、交换明文左右32比特

4、初始逆置换

输出64比特的密文数据

其中16轮次迭代使用的子密钥的产生流程为:

1.输入64位的密钥;2.对密钥进行密钥置换 1得到56位的输出;3.将所得输出分为28位的两等份,分别对两个分组进行循环左移;4.将第三部所获得的两个分组组合即为下一轮次的密钥输入,再对这这两个分组进行压缩置换所得的48位输出就作为当前循环轮次的子密钥。

如此循环16次

具体流程:

1、首先对输入的64位明文进行初始置换IP:置换表为

 其含义是,按照置换表中的数值表示的位置的数值放在指定位置,比如第一个数是58,意为把58位的数放在第一位。

2、在密钥控制下进行16轮迭代(Feistel)

迭代采用的是Feistel加密算法,将64位的输入分为32位的两等份,其中

对应的轮函数处理是:

   1.首先对RE部分进行扩展置换(或E盒置换),使得其被扩展成48位,E盒置换的置换表为

   2.再将所得的对应48位子密钥和扩展置换所得的48位输出进行异或。

   3.将两者异或所得的输出进行S-盒代替,S-盒代替原理:
通过S-盒代替将48位的输入变回了32位的输出,其实际使用就是将48位按6*8分为了8个组,用4位去替代6位,得到4*8=32的输出。对这输入的八个组分别用S盒1~8进行代替。【注意:整个过程中只有S-盒是代替其他的都是置换。】

   4.最后再对得到的32位输出进行P-盒置换

 3、再将第16轮次互换完的数据左右进行互换,也就相当于Feistel加密运行到第16轮后不进行左右互换。

4、对所得输出进行一个初始逆置换即得到所求的密文

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/309561.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号