美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密算法的公告。加密算法要达到的目的(通常称为DES 密码算法要求)主要为以下四点: ☆提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改;
☆具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握;
☆DES密码体制的安全性应该不依赖于算法的保密,其安全性仅以加密密钥的保密为基础;
☆实现经济,运行有效,并且适用于多种完全不同的应用。
1977年1月,美国政府颁布:采纳IBM公司设计的方案作为非机密数据的正式数据加密标准(DES枣Data Encryption Standard)。 目前在国内,随着三金工程尤其是金卡工程的启动,DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域被广泛应用,以此来实现关键数据的保密,如信用卡持卡人的PIN的加密传输,IC卡与POS间的双向认证、金融交易数据包的MAC校验等,均用到DES算法。
DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。
DES算法是这样工作的:如Mode为加密,则用Key 去把数据Data进行加密, 生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。在通信网络的两端,双方约定一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式在公共通信网(如电话网)中传输到通信网络的终点,数据到达目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样,便保证了核心数据(如PIN、MAC等)在公共通信网中传输的安全性和可靠性。
通过定期在通信网络的源端和目的端同时改用新的Key,便能更进一步提高数据的保密性,这正是现在金融交易网络的流行做法。
DES算法详述
DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,整个算法的主流程图如下:
其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,其置换规则见下表:
58,50,12,34,26,18,10,2,60,52,44,36,28,20,12,4,
62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,
57,49,41,33,25,17, 9,1,59,51,43,35,27,19,11,3,
61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7,
即将输入的第58位换到第一位,第50位换到第2位,...,依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0 是右32位,例:设置换前的输入值为D1D2D3......D64,则经过初始置换后的结果为:L0=D58D50...D8;R0=D57D49...D7。
经过16次迭代运算后。得到L16、R16,将此作为输入,进行逆置换,即得到密文输出。逆置换正好是初始置的逆运算,例如,第1位经过初始置换后,处于第40位,而通过逆置换,又将第40位换回到第1位,其逆置换规则如下表所示:
40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31,
38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29,
36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27,
34,2,42,10,50,18,58 26,33,1,41, 9,49,17,57,25,
放大换位表
32, 1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9, 8, 9, 10,11,
12,13,12,13,14,15,16,17,16,17,18,19,20,21,20,21,
22,23,24,25,24,25,26,27,28,29,28,29,30,31,32, 1,
单纯换位表
16,7,20,21,29,12,28,17, 1,15,23,26, 5,18,31,10,
2,8,24,14,32,27, 3, 9,19,13,30, 6,22,11, 4,25,
在f(Ri,Ki)算法描述图中,S1,S2...S8为选择函数,其功能是把6bit数据变为4bit数据。下面给出选择函数Si(i=1,2......8)的功能表:
选择函数Si
S1:
14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7,
0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8,
4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0,
15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13,
S2:
15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10,
3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5,
0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15,
13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9,
S3:
10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8,
13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1,
13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7,
1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12,
S4:
7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15,
13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9,
10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4,
3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14,
S5:
2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9,
14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6,
4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14,
11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3,
S6:
12,1,10,15,
分享到:
相关推荐
DES 算法加密算法解密算法 DES 算法概述 DES(Data Encryption Standard)是一种对称密钥块加密算法,由美国 IBM 公司的 W. Tuchman 和 C. Meyer 于 1971-1972 年研制成功。1973 年,美国国家标准局(NBS)公开...
在这篇文章中,我们将讨论如何使用 Matlab 实现 DES 加密算法。DES 算法是美国数据加密标准,是一种对称密码体制加密算法。其密钥长度为 56 位,明文按 64 位进行分组,将分组后的明文组和 56 位的密钥按位替代或...
### DES算法实验报告知识点 #### 实验目的 本次实验旨在通过编写DES算法代码,深入了解分组密码算法的设计理念及其工作模式。DES(Data Encryption Standard,数据加密标准)是一种广泛使用的对称加密算法,由IBM...
基于给定文件的信息,我们将详细阐述DES算法的背景、设计理念、应用场景以及它在解决特定问题方面的优势。同时,我们将基于已有的描述,尝试复原文章中可能提到的DES算法的具体过程,并给出相关的伪代码描述。 ### ...
在本项目中,"信息安全DES算法带界面实现"是一个实验性质的程序,它提供了用户友好的图形界面,使得用户可以直观地进行DES算法的操作,并进行不同进制之间的转换。 DES算法由IBM公司于1970年代初期设计,1977年被...
本文档描述了DES算法和3DES算法加、解密流程和补位数据规则,供理解学习DES算法和3DES算法。供密码开发相关人员了解最简单的密码算法入门学习使用。
DES是一种对称加密算法,使用56位的密钥对数据进行加密,而3DES是通过三次应用DES算法来提高其安全性,从而提供更强大的加密强度,其密钥长度达到了168位。 在C++中实现3DES算法通常涉及以下几个关键步骤: 1. **...
基于Java实现的DES算法 作为一个IT行业大师,我将从给定的文件中生成相关知识点。 标题:基于Java实现的DES算法 在这个标题中,我们可以看到这个Java程序的主要功能是实现DES(Data Encryption Standard)算法。...
RSA 算法与 DES 算法的实现 RSA 算法是第一个既能用于数据加密也能用于数字签名的算法,因此它为公用网络上信息的加密和鉴别提供了一种基本的方法。它通常是先生成一对 RSA 密钥,其中之一是保密密钥,由用户保存;...
### DES算法在MATLAB中的实现 #### 一、概述 数据加密标准(Data Encryption Standard,简称DES)是一种对称密钥算法,用于保护敏感数据的安全传输。它最初由IBM开发,并于1977年被美国国家标准局采纳为官方标准。...
本文将详细介绍DES算法的原理以及如何使用C++进行实现,并结合提供的"TestForm"测试类来探讨其实用性。 DES算法基于Feistel结构,由IBM在1970年代初期开发,后来被美国国家标准局(NIST)采纳为数据加密标准。它...
DES算法基于块密码的设计原理,采用64位的数据块和56位的密钥进行操作,通过一系列复杂的数学运算,将明文转换为密文,以保护数据的安全。 描述中的"只有300行的代码"表明这是一个简化的DES算法实现,对于初学者来...
C语言实现DES算法DES加密算法实验报告.doc
DES算法原理与实现,DES算法原理与实现DES算法原理与实现DES算法原理与c实现
DES算法的主要流程包括初始置换(IP)、16轮迭代运算和逆初始置换(IP-1)。 初始置换(IP)的作用是将64位的明文按照特定规则重新排列,分为L0和R0两部分,每部分32位。IP置换规则是将原始64位数据重新排序,例如...
在C语言中实现DES算法,主要涉及以下几个核心知识点: 1. **密钥扩展**:DES的56位密钥在实际使用中会被扩展成64位,并通过一系列置换和循环移位操作,形成16个子密钥,每个子密钥48位。这个过程称为密钥扩展,包含...
基于 C++ 的 DES 算法实现 摘要:本文主要研究了基于 C++ 的 DES 算法实现,旨在解决当前网络环境中的数据加密问题。通过对 DES 算法的原理、优缺点的分析,并编写了 C++ 源代码,实现了数据的加密。研究结果表明,...
在C语言中实现DES算法,可以帮助理解其工作原理,并且为实际项目开发提供基础。 DES算法的核心是Feistel结构,它将原始数据分为左右两半,通过迭代16轮的加密过程,每轮都包含一系列的置换和异或操作。这些操作包括...
"DES算法及流程图" DES(Data Encryption Standard)算法是美国IBM公司研制的一种对称加密算法,具有较高的安全性。它是一种迭代分组密码算法,使用最为广泛的加密算法之一。下面对DES算法的基本组成和流程图进行...
"DES 算法课程设计" 在信息安全工程中,DES(Data Encryption Standard)算法是一种对称加密算法,用于保护数据免受未经授权的访问。该算法的设计主要是为了提供一种安全的加密方法,以保护敏感信息免受未经授权的...