现代密码算法---DES算法

原创 2018年04月16日 14:30:37

上一期,我介绍了密码学的基本理论,然后还介绍了最古老的代换密码凯撒密码。当然了古典密码还有很多比如仿射密码、Hill密码、Play fair密码等等,我在这里就不一一介绍了,毕竟这些古典密码基本已经没什么实用价值了,介绍这些也只是让大家了解一下加密/解密的过程,从现在起开始给大家介绍一下现代密码算法。

现代加密算法大致分为量大了两大类分别是:对称加密算法和非对称加密算法。其中对称加密算法还分为分组密码和流密码。它的示意图大概是这个样子的(后面的那些是比较常见的算法,不是全部):

对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的秘密。

非对称密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的

还有一部分算法是用来对数据做提炼的,为消息提供完整性服务。有消息认证码(MAC)和产生消息哈希值的散列函数。这方面技术似乎和现在的区块链结合的挺紧密的,等讲到这部分的时候再说吧。

今天就介绍一些分组密码中的经典DES算法。

说到DES算法,就不得不讲Feistel框架了,

Feistel框架

一种近乎完美大密码体制,同时也是目前大多数分组密码采用的结构它主要采用了乘积密码的思想,交替使用代换和置换。

下面是Feistel的基本结构:

Feistel框架的整个加密就是对同一步骤进行多次循环(DES选择的是16轮循环)。轮数越多加密的效果越好,当然其加密时间也就越长。

现在拿出一轮给大家做一下分析:首先它将输入分为两段,一段为L;一段为R。然后通过轮函数F对左半轮(即L)进行代换,最后在置换:交换左右两段的数据。

在Feistel框架中会把原始密钥生成为若干子密钥,然后子密钥作为每一轮F函数的输入。

写出来,大概是这个样子:

LEi+1=REi

REi+1=LEi⊕F(REi+Ki+1)

其中Ki是子密钥;

下面说DES算法:

DES算法简介

64比特的明文分组输入;64比特的密文分组输出;同时它采用64比特的密钥(但是实际只使用了56位,其中的第8,16,24,3 2,40,48,54,64这八位用作奇偶校验);也就是说DES的密钥共有2的56次方种可能;在DES中Feistel框架进行了16轮操作,在Feistel中64位的数据被分为R和L各32位,子密钥是48位。

DES加密

下面用这个图说明一下DES算法的加密流程吧:

DES解密

加密和解密可以使用相同的算法。加密和解密唯一不同的是秘钥的次序是相反的。就是说如果每一轮的加密秘钥分别是K1、K2、K3...K16,那么解密秘钥就是K16、K15、K14...K1。为每一轮产生秘钥的算法也是循环的。加密是秘钥循环左移,解密是秘钥循环右移。解密秘钥每次移动的位数是:0、1、2、2、2、2、2、2、1、2、2、2、2、2、2、1

DES的解密

当然,就现在的计算机运算速度而言,56位密钥的加密算法,穷举攻击应该很短的时间就能破解了。

密码学-现代密码算法DES

  • 2009年05月12日 14:25
  • 417KB
  • 下载

DES密码算法 DES DES 加密

  • 2010年05月09日 00:43
  • 3KB
  • 下载

des密码算法代码

  • 2012年12月03日 10:38
  • 20KB
  • 下载

DES加密算法编程实现

课程上比较好玩的实验,分享出来给大家一起学习~DES加密算法编程实现华南理工大学 软件学院 陈春华 (博士) 实验目的      通过使用DES 算法对实验数据进行加密和解密,掌握现代分组密码算法基本...
  • kingboung
  • kingboung
  • 2017-03-31 21:46:15
  • 1893

DES算法C++代码实现-密码学

#include #include #include #include #include using namespace std; int ss[8][4][16]; void Init(...
  • MIKASA3
  • MIKASA3
  • 2016-11-08 18:55:27
  • 833

非常通俗易懂的解释密码算法原理!

密码分析(上) Tip:因为考试需要而总结的,因为写的比较通俗易懂,就放到博客里来了。 一、代换密码 1.1 移位(凯撒)密码    应该是          注意:别被左边那种公式误导了,应该是先...
  • Waternoodle
  • Waternoodle
  • 2015-12-31 16:54:38
  • 2864

DES算法缺陷和改进

DES是个经典的算法,从1974年IBM发明DES算法开始,它应经被广泛应用全世界的金融服务和其他工业中,但是它的缺点也是很明显的。下面我们就从它的缺点说起。DES第一个缺点就是密钥长度过短。DES的...
  • yunnysunny
  • yunnysunny
  • 2010-11-06 20:13:00
  • 6560

s-des密码算法实现

实验二 S-DES算法实现   一、S-DES算法分析 1、Simplified DES方案,简称S-DES方案。它是一个供教学而非安全的加密算法,它与DES的特性和结构类似,但参数小。 加密...
  • u010862301
  • u010862301
  • 2014-10-28 16:57:53
  • 651

DES加密算法的C++实现

《信息安全技术》这门课又在讲 DES 加密算法了,以前用纯C写过一次,这次我用 C++ 重新写了一个,写篇文章以备后用。本文介绍了 DES 算法加密的大致步骤和整体流程。 一、DES算法原理 DES算...
  • lisong694767315
  • lisong694767315
  • 2014-12-06 18:31:19
  • 27323

DES 加密算法原理

  DES加密算法是由 IBM 研究在1977年提出的。使用64位(bit)的数据进行加密和解密的,所用的密钥也是64位。并被美国国家标准局宣布为数据加密标准DES,主要用于非国家保密机关。 ...
  • ljuncong
  • ljuncong
  • 2007-09-04 15:36:00
  • 13115
收藏助手
不良信息举报
您举报文章:现代密码算法---DES算法
举报原因:
原因补充:

(最多只允许输入30个字)