数据加密标准(Data Encryption Standard)(DES)是一种用于加密数字数据的对称密钥算法。密钥长度为56位,安全性不强,但它在密码学的进步中具有很大的影响力。
数据加密标准DES于1970年代初在IBM开发,是由美国的国家标准局(NBS,即现在的国家标准与技术会NIST)开启,在1972年时,当时美国国家标准局对美国政府计算机安全的研究发现需要一个政府范围的标准来加密未分类的敏感信息。
基于Horst Feistel的早期设计,应国家标准局(NBS)的邀请提交给保护敏感、非机密电子政府数据的候选者。
1973年,NBS 征求了符合严格设计标准的密码方案,但还没有达到要求。1974年,IBM提交了 1973-1974 年间基于早期算法Horst Feistel的Lucifer密码开发的密码。
DES 在 1976 年 11 月被批准为联邦标准,在与国家安全局(NSA) 协商后,NBS选择了一个稍微修改过的版本(加强了针对差分密码分析,但削弱了针对暴力攻击),作为官方的联邦信息处理标准(FIPS)发布1977 年的美国。
数据加密标准DES是块加密算法,它采用固定长度的明文位串,按64位块长度分块进行加密数据,算法通过把数据分为以64为单位的块,把64位明文作为DES的输入,产生64位密文输出。
DES为对称加密算法,也就是加密与解密使用相同的算法和密钥。
密钥表面上由 64 位组成,实际使用了其中的 56 位,8位仅用于检查奇偶性之后被丢弃。
与其他分组密码一样,DES 本身并不是一种安全的加密方式,而是必须在一种操作模式下使用。解密使用与加密相同的结构,但使用的密钥顺序相反。
通过上图可以看出,一共经历了 16 次相同的阶段,也称为称为轮次。在开始之前,先通过IP,就是将64位分为两个32位,并交替处理。Feistel 结构确保解密和加密是非常相似的过程——唯一的区别是子密钥在解密时以相反的顺序应用,算法的其余部分是相同的,简化了繁杂的实现过程。
图片中⊕符号表示异或(XOR)
F 函数将半个块与一些密钥一起打乱。然后将 F 函数的输出与块的另一半组合,并在下一轮之前交换两半。最后一轮结束后,交换两半;这是Feistel结构的一个特点,它使加密和解密过程相似。
S-box(substitution box)也叫“密码置换盒”,用于提高安全系数
References: https://en.wikipedia.org/