密码学学习记录 10 / 15
- 密码学学习记录|hash md5 算法
- 密码学学习记录|hash md5 算法练习样本一
- 密码学学习记录|hash md5 算法练习样本二
- 密码学学习记录|hash sha1 算法
- 密码学学习记录|hash sha1 算法练习样本一
- 密码学学习记录|hash sha256 算法
- 密码学学习记录|hash sha256 算法练习样本一
- 密码学学习记录|hash sha512 算法
- 密码学学习记录|hash hmac 算法
- 密码学学习记录|des 加解密算法
- 密码学学习记录|des - 3des 算法
- 密码学学习记录|aes 加解密算法
- 密码学学习记录|aes dfa 练习样本一
- 密码学学习记录|aes dfa 练习样本二
- 密码学学习记录|aes dfa 练习样本三
前言
本文主要分享下在学习 des 算法过程的一些心得,以及一些困惑,同时因为初学着,文中有描述错误的地方,还望各位巨巨巨佬指点迷津
维基百科
- DES 简介
DES 全称 Data Encryption Standard,中文为数据加密标准,是一种对称密钥加密块密码算法,1976年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来。它基于使用56位密钥的对称算法。这个算法因为包含一些机密设计元素,相对短的密钥长度以及怀疑内含美国国家安全局(NSA)的后门而在开始时有争议,DES因此受到了强烈的学院派式的审查,并以此推动了现代的块密码及其密码分析的发展。
- 算法描述
DES是一种典型的块密码 — 一种将固定长度的明文通过一系列复杂的操作变成同样长度的密文的算法。对DES而言,块长度为64位。同时,DES使用密钥来自定义变换过程,因此算法认为只有持有加密所用的密钥的用户才能解密密文。密钥表面上是64位的,然而只有其中的56位被实际用于算法,其余8位可以被用于奇偶校验,并在算法中被丢弃。因此,DES的有效密钥长度仅为56位。
参考资料
- DES 加密算法 : https://bbs.pediy.com/thread-253558.htm
- 神秘的 DES 加密算法: https://www.cxyxiaowu.com/1478.html
- 维基百科 DES : https://zh.wikipedia.org/wiki/DES
- DES 补充材料 : https://zh.wikipedia.org/wiki/DES补充材料
DES 加密算法
密钥编排
密钥编排,拿密钥 key 计算生成 16 个子密钥。具体流程
-
1、密钥置换 PC-1(64bit -> 56bit)
-
2、56bit 分成两部分 L R 各 28bit
-
3、循环 16次 进行左移移位
-
4、移位完成 L + R,置换 PC-2
明文填充
就是大家熟悉的 pkcs5/normal,两种填充方式了
加密模式
des 有多种加密模式,本文只说下 ebc/cbc,常用的两种模式
F 函数
-
1、IP 盒置换(初始置换)
-
2、获取 L R 各 36bit,循环 16次
-
3、R 与 E 盒置换(扩展置换)
-
4、R 与 子密钥进行异或
-
5、S 盒压缩置换
-
6、P 盒置换
-
7、R 与 L进行异或
-
8、16 次循环结束 R + L 与 IP-1盒逆置换
DES 解密算法
与加密算法流程类似,就是有部分逻辑是反过来的
全部代码
注意该订单不支持退款,如有问题可联系博主