在密码学中,加密算法分为双向加密和单向加密。单向加密包括MD5、SHA等摘要算法,它们是不可逆的。双向加密包括对称加密和非对称加密,对称加密包括AES加密、DES加密等。双向加密是可逆的,存在密文的密钥。AES算法是DES算法的替代者,也是现在最流行的加密算法之一。下面给大家介绍什么是AES加密算法,以及AES加密算法的原理和流程。

什么是AES加密算法

AES是高级加密标准,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,目前已经被全世界广泛使用,同时AES已经成为对称密钥加密中最流行的算法之一。AES支持三种长度的密钥:128位,192位,256位。

AES加密算法原理

1.密钥

密钥是AES算法实现加密和解密的根本。对称加密算法之所以对称,是因为这类算法对明文的加密和解密需要使用同一个密钥。

AES支持三种长度的密钥:128位,192位,256位

平时大家所说的AES128,AES192,AES256,实际上就是指的AES算法对不同长度密钥的使用。

2.填充

要想了解填充的概念,我们先要了解AES的分组加密特性。什么是分组加密呢?我们来看看下面这张图:AES算法在对明文加密的时候,并不是把整个明文一股脑加密成一整段密文,而是把明文拆分成一个个独立的明文块,每一个明文块长度128bit。

这些明文块经过AES加密器的复杂处理,生成一个个独立的密文块,这些密文块拼接在一起,就是最终的AES加密结果。

假如一段明文长度是192bit,如果按每128bit一个明文块来拆分的话,第二个明文块只有64bit,不足128bit。这时候怎么办呢?就需要对明文块进行填充(Padding)。

填充涉及以下三种填充模式:

NoPadding:不做任何填充,但是要求明文必须是16字节的整数倍。

PKCS5Padding(默认):如果明文块少于16个字节(128bit),在明文块末尾补足相应数量的字符,且每个字节的值等于缺少的字符数。

比如明文:{1,2,3,4,5,a,b,c,d,e},缺少6个字节,则补全为{1,2,3,4,5,a,b,c,d,e,6,6,6,6,6,6}

ISO10126Padding:如果明文块少于16个字节(128bit),在明文块末尾补足相应数量的字节,最后一个字符值等于缺少的字符数,其他字符填充随机数。

比如明文:{1,2,3,4,5,a,b,c,d,e},缺少6个字节,则可能补全为{1,2,3,4,5,a,b,c,d,e,5,c,3,G,$,6}

AES算法流程

AES加密算法涉及4种操作:字节替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和轮密钥加(AddRoundKey)。下图给出了AES加解密的流程,从图中可以看出:

1、解密算法的每一步分别对应加密算法的逆操作;

2、加解密所有操作的顺序正好是相反的。正是由于这几点(再加上加密算法与解密算法每步的操作互逆)保证了算法的正确性。加解密中每轮的密钥分别由种子密钥经过密钥扩展算法得到。算法中16字节的明文、密文和轮子密钥都以一个4x4的矩阵表示。

AddRoundKey (轮密钥加)— 矩阵中的每一个字节都与该次轮密钥(round key)做XOR运算;每个子密钥由密钥生成方案产生。

SubBytes(字节替代) — 通过非线性的替换函数,用查找表的方式把每个字节替换成对应的字节。

ShiftRows(行移位) — 将矩阵中的每个横列进行循环式移位。

MixColumns (列混淆)— 为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每列的四个字节。

以上为AES在加密中的大致流程。

附上一个在线加密解密的网站:https://md5.cn/

总而言之,AES是用来替代DES的新一代加密标准,具有128bit的分组长度,支持128、192和256比特的密钥长度,它是目前最流行的加密算法之一。上文介绍了AES加密算法的原理和流程,更多关于加密算法的内容,后期会继续更新。

相关文章:

你的密码安全吗?如何加密才安全?_哈客部落的博客-CSDN博客因为MD5加密有一定的安全保证,而且实现起来非常简单,我们当然可以采用其它的加密方式(如SHA家族算法、AES、RSA等),甚至是多种加密方式的组合,但是对安全性要求没那么高的场景,我们就采用了MD5加密。https://blog.csdn.net/m0_69916115/article/details/126666338DES加密算法安全吗,有哪些优点和缺点?_哈客部落的博客-CSDN博客_des算法安全性在密码学中,DES算法是一种常见的分组加密算法,它是应用最为广泛的对称加密算法。加密算法有很多种,DES算法只是其中的一种,那么DES加密算法安全吗?DES加密算法有哪些优点和缺点?下面本文将对这些问题进行分析讲解,希望能够帮助大家进一步了解DES加密算法。...https://blog.csdn.net/m0_69916115/article/details/126628572

什么是AES加密?详解AES加密算法原理流程相关推荐

  1. AES加密 — 详解

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/120285594 本文出自[赵彦军的博客] 文章目录 推荐 AES 简介 对称加密 ...

  2. 通俗易懂,十分钟读懂DES,详解DES加密算法原理,DES攻击手段以及3DES原理。Python DES实现源码

    文章目录 1.什么是DES 2.DES的基本概念 3.DES的加密流程 4.DES算法步骤详解 4.1 初始置换(Initial Permutation,IP置换) 4.2 加密轮次 4.3 F轮函数 ...

  3. RSA加密 — 详解

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/120316606 本文出自[赵彦军的博客] 文章目录 推荐 RSA 简介 RSA 常 ...

  4. java加密算法入门(三)-非对称加密详解

    1.简单介绍 这几天一直在看非对称的加密,相比之前的两篇内容,这次看了两倍多的时间还云里雾里的,所以这篇文章相对之前的两篇,概念性的东西多了些,另外是代码的每一步我都做了介绍,方便自己以后翻阅,也方便 ...

  5. IOS之RSA加密解密与后台之间的双向加密详解

    IOS之RSA加密解密与后台之间的双向加密详解 序言 因为项目中需要用到RSA加密,刚开始也是有点乱,这两天也整理的差不多了,希望能帮到大家. 这次先上代码,我想大部分人肯定是着急解决问题,所以不要废 ...

  6. mysql数据库表添加加密密码_数据库账号密码加密详解及实例

    数据库账号密码加密详解及实例 数据库中经常有对数据库账号密码的加密,但是碰到一个问题,在使用UserService对密码进行加密的时候,spring security 也是需要进行同步配置的,因为sp ...

  7. php内置aes加密,PHP进行AES加密

    一.AES简介 高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的).对称加密算法也就是加密和解密用相同的密 ...

  8. 微信公众号登录密码参数加密详解

    微信公众号登录密码pwd参数加密详解 前言 此参数的加密没有任何难度,适合小白练手学习. 网址:https://mp.weixin.qq.com/ 一.打开浏览器开始抓包 输入错误的账号密码,登录.然 ...

  9. Android传输数据时加密详解

    Android传输数据时加密详解 ONE Goal , ONE Passion ! ------–MD5加密------- MD5即Message-Digest Algorithm 5(信息-摘要算法 ...

  10. ASP.NET Core分布式项目实战(详解oauth2授权码流程)--学习笔记

    最近公司产品上线,通宵加班了一个月,一直没有更新,今天开始恢复,每日一更,冲冲冲 任务13:详解oauth2授权码流程 我们即将开发的产品有一个用户 API,一个项目服务 API,每个服务都需要认证授 ...

最新文章

  1. css 选择器 伪元素_CSS伪元素-解释选择器之前和之后
  2. [Selenium] 操作浏览器 Cookies
  3. Excel中配置VBA的工作环境
  4. 虚拟机centos7 识别不出网卡的解决方案
  5. TCP 可靠传输机制详解
  6. 第4章 Python 数字图像处理(DIP) - 频率域滤波11 - 使用高通滤波器锐化图像
  7. system.gc 性能_使用这些先进的GC技术提高应用程序性能
  8. java可视化压缩_web可视化技术发展(1/6)
  9. numpy细碎知识点
  10. POJ_2513Colored Sticks 字典树+
  11. 【kafka】kafka 同时建立很多消费者 会怎么样
  12. nginx启动vue_Docker部署前端Vue
  13. orcadcapture安装_OrCAD下载
  14. 【python】urlencode、quote、unquote
  15. jquery怎么读(jquery怎么读音英语)
  16. 银行圈巨变!中国建设银行无人银行开业!
  17. 微信开发工具无法支持vue文件
  18. 20162330 第十周 蓝墨云班课 十字链表
  19. 端午节(文章来源于网络)
  20. An assembly specified in the application dependencies manifest

热门文章

  1. JavaScript鼠标滚轮控制左右移动
  2. JS拖拽不流畅、鼠标滑动太快导致拖拽物脱离鼠标问题
  3. 【BIM+GIS】BIM模型导入GIS软件之前的一些处理设置
  4. mysql执行状态分析
  5. Golang和Erlang消息传递机制对比
  6. Java微信支付V3 DEMO分享
  7. 年营业额200亿的廉价批发市场,代购手里一半的假包都来自这里
  8. WinDbg调试CPU占用高的问题
  9. 电容笔做的比较好的品牌有哪些?高性价比电容笔测评
  10. 【python8】股票查询系统