首页 > 其他分享 >AES加密解密原理

AES加密解密原理

时间:2022-11-11 21:58:27浏览次数:40  
标签:AES 加密 字节 矩阵 解密 异或 密钥

AES加密解密原理

AESFPGA

AES加密

AES是一个对称密码,它的存在是为了取代被证明不安全的DES算法。

一、AES加密过程



上图为128位的加密过程,如果长度为192位,则要经过12轮加密运算,同理,256位的需要经过14轮加密。

以128位为例,其中9轮为循环运算,最后一轮只有步骤1,2,4,没有列混合。

明文长度固定为128位(16字节)
密钥长度可以是128、192、256位

二、初始变换

AES和DES一样是分组加密的
所以,把明文划分成若干个等长的明文块,分块进行加密、
将数据按照下图的方式进行排列,得到一个4 * 4的矩阵

将明文的4 * 4矩阵以及密钥的4 * 4矩阵进行异或操作。(按字节异或)

具体例子如下:

三、循环运算

3.1字节代换

将输入的矩阵通过这个S表,完成从一个字节到另一个字节的映射。

代换完成后如下:
enter description here

3.2行移位

这个矩阵的第一行保持不变,第二行向左移动一个字节,第三行向左移动两个字节。第四行向左移动三个字节。
enter description here

3.3列混合

列混合就是将输入的一个4x4的矩阵左乘一个给定的4x4矩阵。
enter description here

enter description here
enter description here
enter description here
注意,这里的举证点乘与数学中的点成有些不同,这里的加法变成了异或运算
enter description here

普通的乘法变成了X乘,也就是 x-time算法
具体细节如下,
01
01与一个数相乘还是那个数本身。
02
将两个数都转为2进制,a7如果等于1,则去掉a7,左移一位,在右侧补0,然后异或00011011;a7如果等于0,则直接去掉a7,左移一位,在右侧补0。
enter description here
03
对于03来说,要拆成02与01的异或,然后分别相乘,如上,最后在异或。
enter description here

3.4轮密钥加

将矩阵与一个子密钥的没一列进行逐个异或,得到一个新的矩阵。
enter description here

3.5子密钥扩展

一开始只有一个子密钥,需要经过循环扩展生成10轮的轮密钥。
enter description here

1.如果i不是4的倍数,那么第i列由如下等式确定:
enter description here
W5 = W1enter description here W4
W6 = W2enter description here W5
1

2.如果i是4的倍数,那么第i列由如下等式确定︰
enter description here

这个T函数由3部分组成:字循环、字节代换和轮常量异或。

a.字循环:将1个字中的4个字节循环左移1个字节。即将输⼊字[b0, b1, b2, b3]变换成
[b1,b2,b3,b0]。

enter description here

b.字节代换:对字循环的结果使⽤S盒进⾏字节代换。
enter description here

c.轮常量异或:将前两步的结果同轮常量Rcon[j]进⾏异或,其中j表示轮数。
轮常量



蓝色代表W(i-4),橙色代表字节变换后的,黄色代表轮常量里的数R(J)。

以此类推,得到10轮变换所需要的轮密钥。

标签:AES,加密,字节,矩阵,解密,异或,密钥
From: https://www.cnblogs.com/ffy11/p/16882128.html

相关文章

  • 2010 Principles on the Security of AES against First and Second-Order Differenti
    一、对于AES算法的DPA攻击准则(无防护措施下的AES实现)(1)在第3轮列混淆前任意中间值可以用于一阶DPA攻击,该攻击将明文的0,3或15比特固定(2)在第7轮轮......
  • MD5 到底算不算一种加密算法?
    hello,大家好,我是张张,「架构精进之路」公号作者。一旦提到加密算法,经常有人会有这样的疑问:MD5到底算不算一种加密算法呢?在回答这个问题之前,我们需要先弄清楚两点:什么是加密......
  • RSA后台加密,前端解密--服务端跳转的时候会将“+”号替换成空格,所以用URLEncoder.encod
    RSA后台加密,前端解密1遇到的问题,使用fastJson对java对象转json,json的格式空值是null,导致无法解密解决,使用net.sf.json将java对象转的json  JSONObect..fromOb......
  • 微信DAT文件解密(dat转图像)
    微信电脑版现在已经是日常工作生活必不可少的工具,有时候删除了聊天记录或者被系统清理软件清理了,但还想查看曾经的微信聊天图片。这个时候辛辛苦苦找到了文件,却发现无法查......
  • Java Web项目中使用RSA加密数据
    在Web项目中有些时候需要对传输的数据加密后再传输到服务端进行解密使用,这里采用RSA进行公钥加密私钥解密的模式会有较高的安全性。这里选用的工具库是 JSEncrypt.js ......
  • 深度解密Go语言之sync.map
    工作中,经常会碰到并发读写map而造成panic的情况,为什么在并发读写的时候,会panic呢?因为在并发读写的情况下,map里的数据会被写乱,之后就是 Garbagein,garbageout,还......
  • 好玩的接口 之 Java 解密微信小程序获取手机号
    LZ-Says:有些东西,真的是很矛盾,本来很简单的事儿,各自坚持,结果,不欢而散,不舍?如何?前言最近搞接口,基于SpringBoot,怎么说呢,很虐。不过熟悉了业务,表结构等等,相对来说还是比较n......
  • vue中rsa加密
    1.下载组件npminstall--savejsencrypt 2.在main中引入importVuetifyfrom'vuetify';import'vuetify/dist/vuetify.min.css';Vue.use(Vuetify) 3、页......
  • Go 微服务实战之如何实现加解密操作的微服务开发
    1前言在上一篇文章——《​​Go微服务实战之如何使用go-micro写微服务应用​​》中,我们介绍了微服务的相关概念和go-micro框架的特点。接下来,我们将以循序渐进的方式......
  • 解密负载均衡技术和负载均衡算法
    什么是负载均衡技术负载均衡器是一种软件或硬件设备,它起到了将网络流量分散到一组服务器的作用,可以防止任何一台服务器过载。负载均衡算法就是负载均衡器用来在服务器之间......