对称加密
对称加密算法中,数据发送方将明文和密钥一起经过特殊加密算法处理成密文后,将它发送出去。接收方收到密文后,若想解读原文,则需要使用加密用到的相同密钥及相同算法的逆算法对密文进行解密,才能使其恢复成原文。
它的最大优势是加/解密速度快,适用于大数据量进行加密,缺点是密钥管理困难,最典型的问题就是如何同步这个密钥,同步过程如果在公网上,不进行加密是可以抓包拿到的,那么这里就遇到了要对密钥加密的问题。
常见的对称加密算法有 AES、DES、Blowfish 等等。
对称加密的核心是只有一把密钥。
目录
DES加密算法,为对称加密算法中的一种。70年代初由IBM研发,后1977年被美国国家标准局采纳为数据加密标准,即DES全称的由来:Data Encryption StandardDES,也是是目前最为流行的加密算法之一
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加密算法介绍(含例子) - alittlecomputer - 博客园 (cnblogs.com)数据加密算法--详解DES加密算法原理与实现 - DreamGo - 博客园 (cnblogs.com)
AES是高级加密标准,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,目前已经被全世界广泛使用,同时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)
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/