对称密码学:02 数据加密标准(DES)
来源:互联网 发布:最强大脑 小度 知乎 编辑:程序博客网 时间:2024/06/05 20:07
什么是DES
数据加密标准,即DES(Data Encryption Standard)。在发音时,DES作为缩写按字母来读的话:(/ˌdiːˌiːˈɛs/);作为一个单独的词来读的话:(/ˈdɛz/)。
对称算法有两种类型:块密码和流密码。而DES算法就是采用了块密码,每一次处理固定长度输入块,每一个输入块,有生成了一个输出块。对于DES来说,它的块长度为64位。
DES算法结构
DES算法要进行16次相同过程的处理,叫做“回次”。而在初始和结尾处各有一次置换的处理,分别称为IP和IP-1(也叫做FP,即反函数).
初始置换IP
DES会对64位明文分组操作。这64位的明文通过初始置换IP产生64 位置换后的置换文x0,置换表格如下
58504234261810260524436282012462544638302214664564840322416857494133251791595143352719113615345372921135635547393123157初始置换把明文的第58位换到了第1位,把50放到了第2位,后面依次类推。
紧接着,这个64位的数据块,被分成2个32位的半块,并且分别处理;这种交叉的方式叫做費斯妥结构。斯妥结构可以保证加密和解密过程可以足够相似,而唯一的区别在于子密钥在解密是逆向的,其余的一样。这种设计理念简化了算法。
图片中的⊕符号表示异或(XOR)处理。F函数把数据半块和某一个子密钥进行处理。然后,一个F函数的输出与另一个半块异或,在把原来的半块组合交换顺序。进入后面一回的处理。在完成最后一次回次后,两个半块交换顺序。
費斯妥函数(F函数)
1. 扩展置换(E)
把数据的友半块从32位扩展到48位。扩展置换表如下
321234545678989101112131213141516171617181920212021222324252425262728292829303132132位的半块扩展到了48位后,以8个6位的块输出。每块包含4位对应的输入位,加上两个邻接的块中紧邻的位。
2. 异或
扩展后的输出与一个密钥通过异或结合。
3. S盒
在和子密钥混合后48位被分成8份6位的块,然后使用S盒置换处理。8个S盒都使用查找表方式提供非线性的变换把6位输出变成了4位的输出。S盒提供了DES的核心安全性—如果没有S盒,密码会是线性的,很容易破解。
S盒的具体置换如下:某一个Si盒的6位输入的第一位和第六位形成了一个2位的二进制数(即0~3),对应表中的某一行;而中间4位构成的4位二进制数(即0~15)对应表中的某一列(PS:行和列从0开始计数)。
S盒如下
4. P盒置换
最后,把8个S盒的输出和在一起成为32位的输出,在通过P置换进行重组。这个设计是为了将每个S盒的4位输出在下一回次的扩张后,使用4个不同的S盒进行处理。P盒如下
1672021291228171152326518311028241432273919133062211425经过这4个步骤,F函数就操作完成了。
子密钥
DES的加密算法为那64位的密钥使用选择置换PC-1从中选出56位的密钥,剩下的8位要么直接丢弃,要么作为奇偶性检验;再将56位分成2份28位的部分。
密钥置换PC-1如下
轮次12345678位数11222222
接下来根据轮数,下面两部分分别循环左移1位或2位.具体每轮移位见下表
轮次910111213141516位数12222221移动后,将两个部分合并成56位后再通过压缩置换PC-2得到48位的子密钥。
压缩置换PC-2如下
1417112415328156211023191242681672720132415231374755304051453348444939563453464250362932末尾置换IP-1
末尾的置换和初始的置换为逆交换。前面经过了16轮的处理,得到的两部分32位的块,通过末尾的置换函数得到64位的密文。
末尾置换IP-1如下
40848165624643239747155523633138646145422623037545135321612936444125220602835343115119592734242105018582633141949175725DES算法用C语言实现
代码就不显示出来,提供代码下载地址
DES_C_Source_Code.7z
版权声明
Moriarty_221为本文的CSDN博客
如未注明,均为原创,转载请注明出处
转载请注明:coskimo » 对称密码学:02 数据加密标准(DES)
版权所有 © 科斯基摩 | 本网站采用cc by-nc-sa 3.0协议进行授权
- 对称密码学:02 数据加密标准(DES)
- DES对称数据加密
- 对称加密(Des)
- java密码学学习整理--对称加密(着重描述3des)
- 【寒江雪】数据加密标准(DES)
- 数据加密标准—DES
- 算法-加密/解密-DES(数据加密标准)
- .NET中的密码学--对称加密(上)
- .NET中的密码学--对称加密(下)
- .NET中的密码学--对称加密(上)
- .NET中的密码学--对称加密(下)
- .NET中的密码学--对称加密(上)
- .NET中的密码学--对称加密(下)
- 密码学之可逆加密 杂谈(对称、非对称)
- 非对称加密(das) 和 对称加密(des)文件
- 信息安全--八:数据加密标准(DES)
- 对称加密算法-AES算法(高级数据加密标准)
- DES对称加密类
- Recycleview checkbox 复用出现混乱解决方法
- 一个简单的java server服务器小程序
- while (cin >> word) {} demo
- C++ 类的析构函数学习笔记1
- HDU 1075 What Are You Talking About Trie
- 对称密码学:02 数据加密标准(DES)
- 基于安卓手持设备的手机应用编程——Intent、Permission、Fragment
- Scheme中的流
- c#条件结构(三)----switch结构
- 关于Cocos2D中使用数据库
- Valerie d'Amy Wineh
- 欢迎使用CSDN-markdown编辑器
- CODEFORCES Flying Saucer Segments
- What happens if your