前言
在密码学中,加密算法分为双向加密和单向加密。单向加密包括MD5、SHA等摘要算法,它们是不可逆的。双向加密包括对称加密和非对称加密,对称加密包括AES加密、DES加密等。双向加密是可逆的,存在密文的密钥。AES算法是DES算法的替代者,也是现在最流行的加密算法之一。
目录
前言
一、DES加密算法
什么是DES加密算法
DES加密算法的原理
二、AES加密算法
什么是AES加密算法
AES加密算法的原理
三、DES与AES的区别比较
AES和DES算法的主要区别
四、加密解密工具推荐
一、DES加密算法
什么是DES加密算法
DES加密算法,为对称加密算法中的一种。70年代初由IBM研发,后1977年被美国国家标准局采纳为数据加密标准,即DES全称的由来:Data Encryption StandardDES,也是是目前最为流行的加密算法之一
DES加密算法的原理
DES还是一种分组加密算法,该算法每次处理固定长度的数据段,称之为分组。DES分组的大小是64位,如果加密的数据长度不是64位的倍数,可以按照某种具体的规则来填充位。
DES是以64比特的明文为一个单位来进行加密的,超过64比特的数据,要求按固定的64比特的大小分组,分组有很多模式。DES使用的密钥长度为64比特,但由于每隔7个比特设置一个奇偶校验位,因此其密钥长度实际为56比特(第8、16、24、32、40、48、56、64位是校验位, 使得每个密钥都有奇数个1)。奇偶校验为最简单的错误检测码,即根据一组二进制代码中1的个数是奇数或偶数来检测错误。
分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。
梳理整个过程
第一步:将初始密钥(64位,实际使用54位)转换成16个子密钥(48位),将明文(明文需要一组一组的来,一组64位)
第二步:将分组好的明文又拆分成2组32位配上密钥进行加密
第三步:进行16轮的替代或交换的方式进行加密,并且一轮使用一个子密钥
第四步:得到密文(一组一组的得到,一组为64位)
详细过程原理以及实现请看大佬文章数据加密算法--详解DES加密算法原理与实现 - DreamGo - 博客园 (cnblogs.com)
二、AES加密算法
什么是AES加密算法
AES是高级加密标准,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,目前已经被全世界广泛使用,同时AES已经成为对称密钥加密中最流行的算法之一。
AES加密算法的原理
AES为分组密码,分组密码也就是把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文。在AES标准规范中,分组长度只能是128位(如果不足则使用填充方式),也就是说,每个分组为16个字节(每个字节8位)。密钥的长度可以使用128位、192位或256位。密钥的长度不同,推荐加密轮数也不同,且每一轮均需要一个子密钥,如下表所示:
AES | 密钥长度(32位比特字) | 分组长度(32位比特字) | 加密轮数 |
---|---|---|---|
AES-128 | 4 | 4 | 10 |
AES-192 | 6 | 4 | 12 |
AES-256 | 8 | 4 | 14 |
Tip:平时大家所说的AES128,AES192,AES256,实际上就是指的AES算法对不同长度密钥的使用
密钥扩展:其复杂性是确保算法安全性的重要部分。当密钥长度是128位时,AES的加密算法共迭代10轮,需要10个子密钥。AES的密钥扩展的目的是将输入的128位密钥扩展成11个128位的子密钥。AES的密钥扩展算法是以字为一个基本单位(一个字为4个字节),刚好是密钥矩阵的一列。因此4个字(128位)密钥需要扩展成11个子密钥,共44个字。
生成子密钥的数量比AES算法的轮数多一个,因为第一个密钥加法层进行密钥漂白时也需要子密钥。密钥漂白是指在AES的输入和输出中都使用的子密钥的XOR加法子密钥在图中都存储在W[0]、W[1]、...、W[43]的扩展密钥数组之中。k1-k16表示原始密钥对应的字节
AES加密算法涉及4种操作:字节替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和轮密钥加(AddRoundKey)。下图给出了AES加解密的流程
梳理整个过程
第一步:将对密钥进行扩散,明文进行分组
第二步:进行加密算法过程:字节替代、行位移、列混肴、轮密钥加
第三步:生成密文
详细过程原理看大佬文章
AES加密算法原理(加密过程) - Shawn_Michaels - 博客园 (cnblogs.com)
三、DES与AES的区别比较
AES和DES算法的主要区别
AES与DES之间的主要区别在于加密过程。在DES中,将明文分为两半,然后再进行进一步处理;而在AES中,整个块不进行除法,整个块一起处理以生成密文。相对而言,AES比DES快得多,与DES相比,AES能够在几秒钟内加密大型文件。
由于DES中使用的共享密钥的比特大小较小,因此它被认为不如AES安全。DES被认为更容易受到暴力攻击,而到目前为止,尚未遇到任何严重攻击的AES。
在灵活性的基础上评估算法的实现,AES比DES更具灵活性,因为它允许包括128、192、256位在内的各种长度的文本,而DES允许对64位固定文本进行加密。
DES回合处理中使用的功能是扩展,置换和替换,具有回合键的XOR操作,而AES回合中使用的功能是子字节,移位行,混合列和添加回合键。AES实际上在硬件和软件实现上都是高效的,而DES最初只在硬件上有效。
DES算法缺点:
分组比较短、密钥太短、密码生命周期短、运算速度较慢。
DES算法优点:
DES算法具有极高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。
AES算法缺点:
目前尚未存在对AES 算法完整版的成功攻击,但已经提出对其简化算法的攻击。
AES算法优点:
1、运算速度快,对内存的需求非常低,适合于受限环境。
2、分组长度和密钥长度设计灵活, AES标准支持可变分组长度,分组长度可设定为32比特的任意倍数,最小值为128比特,最大值为256比特。
3、 AES的密钥长度比DES大,它也可设定为32比特的任意倍数,最小值为128比特,最大值为256比特,所以用穷举法是不可能破解的。
4、具有很好的抵抗差分密码分析及线性密码分析的能力。
总而言之,AES和DES算法之间的区别就是加密过程,这两种算法都有自己的优缺点,相对来说,AES比DES安全性高,运算速度快。
四、加密解密工具推荐
在线AES加密/解密工具,可以输入密钥进行加密和解密,支持可逆加密和解密操作,大家可以去测试:https://md5.cn/