密码学学习记录|des 加解密算法

密码学学习记录 12 / 18

前言

本文主要分享下在学习 des 算法过程的一些心得,以及一些困惑,同时因为初学着,文中有描述错误的地方,还望各位巨巨巨佬指点迷津

维基百科

  • DES 简介

DES 全称 Data Encryption Standard,中文为数据加密标准,是一种对称密钥加密块密码算法,1976年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来。它基于使用56位密钥的对称算法。这个算法因为包含一些机密设计元素,相对短的密钥长度以及怀疑内含美国国家安全局(NSA)的后门而在开始时有争议,DES因此受到了强烈的学院派式的审查,并以此推动了现代的块密码及其密码分析的发展。

  • 算法描述

DES是一种典型的块密码 — 一种将固定长度的明文通过一系列复杂的操作变成同样长度的密文的算法。对DES而言,块长度为64位。同时,DES使用密钥来自定义变换过程,因此算法认为只有持有加密所用的密钥的用户才能解密密文。密钥表面上是64位的,然而只有其中的56位被实际用于算法,其余8位可以被用于奇偶校验,并在算法中被丢弃。因此,DES的有效密钥长度仅为56位。

参考资料

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 解密算法

与加密算法流程类似,就是有部分逻辑是反过来的

全部代码

您需要先支付 39.9元 才能查看此处内容!立即支付

注意该订单不支持退款,如有问题可联系博主

暂无评论
本文作者:
本文链接: https://www.qinless.com/?p=1309
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 qinless 的博客!
100

发表评论

返回顶部