密码学【对称加密-DES\AES】

2023-09-19 16:52:33

前言

在密码学中,加密算法分为双向加密和单向加密。单向加密包括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-1284410
AES-1926412
AES-2568414

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/

更多推荐

LeetCode2.两数相加

一看完题,我的想法是先算出这两个链表表示的数,然后相加,然后把这个数一位一位的分配给第三个数组,这种方法应该很简单但是要遍历三次数组,于是我就想直接一遍遍历,两个链表同时往后面遍历,把这两个数的和给第三个链表,如果有进位,下一个数加1;但是写完之后出现的问题,因为我的循环是先创建下一个链表然后,指针指向这个链表,然后再

AI绘图软件Stable Diffusion 安装和使用之二controlnet插件

本期说一下StableDiffusion非常有名的插件controlnet。同上一篇一样,我们安装b站大佬秋葉aaaki(有的网友戏称他/她是赛博佛祖)的stablediffusion4.2整合包。解压缩以后,打开启动器,见下图,界面比早期版本更好看了。​编辑​启动器打开以后,安装controlnet插件填写网址:ht

【文生图系列】如何在Stable Diffusion Webui中使用ControlNet

文章目录ControlNetStableDiffusion+ControlNet安装ControlNet插件bug例子展示参考ControlNetControlNet是一个神经网络结构,通过添加额外的条件控制扩散模型。给定任务条件,ControlNet能够提升已训练好的图像扩散模型。对于任意一个神经网络块,如下图所示,

【面试经典150 | 数组】跳跃游戏 II

文章目录写在前面Tag题目来源题目解读解题思路方法一:贪心写在最后写在前面本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更……专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容进行回顾与总结,文章结构大致如下,部分内容会有增删:Tag:介绍本题牵涉到的知识点、数据结构;题目来源

软件测试/测试开发丨利用人工智能ChatGPT编写晋级报告

点此获取更多相关资料简介不管是在哪个公司,如果想要有一个长足的发展,想要获得晋升,除了平时的表现与积累,还有就是晋级答辩与晋级报告。不同的岗位,比如设计、产品、研发、测试,都有不同的答辩通道和晋级标准。一篇好的晋级报告,可以完整地体现一个人过去的工作贡献,以及未来的工作展望。而晋级报告的编写,也可以借助ChatGPT轻

微信CRM系统致力于帮助金融保险行业

在当今信息化的时代,金融保险行业面临着越来越大的竞争与挑战,那么微信CRM系统是怎么帮助金融保险行业解决问题的呢?金融保险行业面临的困难①销售管理困难,企业资源容易流失;金融保险业通过在线销售实现业务。电话销售、微信沟通难以监控管理,销售部员工流动性大,导致监管风险和客户资源流失。②客户营销困难,用户意向定位模糊;由于

《golang设计模式》第二部分·结构型模式-06-享元模式(Flyweight)

文章目录1.概述1.1角色1.2类图2.代码示例2.1设计2.2代码2.3类图示例1.概述享元(Flyweight)模式采用共享方式向客户端提供数量庞大的细粒度对象。所谓细粒度对象,是指实现了业务细节并相互独立的对象。细粒度对象是一种相对概念,一般不会进行更小粒度的拆分。1.1角色抽象享元(Flyweight):通常是

【跟小嘉学 Rust 编程】三十、Rust 使用 Slint UI

系列文章目录【跟小嘉学Rust编程】一、Rust编程基础【跟小嘉学Rust编程】二、Rust包管理工具使用【跟小嘉学Rust编程】三、Rust的基本程序概念【跟小嘉学Rust编程】四、理解Rust的所有权概念【跟小嘉学Rust编程】五、使用结构体关联结构化数据【跟小嘉学Rust编程】六、枚举和模式匹配【跟小嘉学Rust

(vue2)面经基础版-案例效果分析

配路由先配一级,一级里面配二级。一级路由:首页(二级:嵌套4个小页面)、详情页高亮a->router-link,高亮效果对自带高亮类名router-link(-exact)-active设置注:通过children配置项,可以配置嵌套子路由。并在该组件中准备路由出口<router-view></router-view>

「聊设计模式」之 设计模式的前世今生

🏆本文收录于《聊设计模式》专栏,专门攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎持续关注&&收藏&&订阅!目录:一、什么是设计模式设计模式的定义设计模式的作用二、设计模式的发展历程设计模式的起源设计模式的发展阶段三、设计模式的分类创建型模式结构型模式行为型模式四、常用的设计模式工厂模式单例模式装饰器模式代理模

【SpringBoot项目】SpringBoot+MyBatis+MySQL电脑商城

在b站听了袁老师的开发课,做了一点笔记。01-项目环境搭建_哔哩哔哩_bilibili基于springboot框架的电脑商城项目(一)_springboot商城项目_失重外太空.的博客-CSDN博客项目环境搭建1.项目分析1.项目功能:登录、注册、热销商品、用户管理(密码、个人信息、头像、收货地址)、购物车(展示、增加

热文推荐