AES加密基本原理图解

Posted Fright-Moch

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AES加密基本原理图解相关的知识,希望对你有一定的参考价值。

AES加密

Fright-Moch整理

AES简介

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

流程图如图

 

&明文P: 没有经过加密的数据。

 

&密钥K: 用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的。密钥为接收方与发送方协商产生,但不可以直接在网络上传输,否则会导致密钥泄漏,通常是通过非对称加密算法加密密钥,然后再通过网络传输给对方,或者直接面对面商量密钥。密钥是绝对不可以泄漏的,否则会被攻击者还原密文,窃取机密数据

 

&AES加密函数:设AES加密函数为E,则 C = E(K, P),其中P为明文,K为密钥,C为密文。也就是说,把明文P和密钥K作为加密函数的参数输入,则加密函数E会输出密文C

 

&密文C: 经加密函数处理后的数据

 

&AES解密函数:设AES解密函数为D,则 P = D(K, C),其中C为密文,K为密钥,P为明文。也就是说,把密文C和密钥K作为解密函数的参数输入,则解密函数会输出明文P。

 

&对称加密算法:加密和解密用到的密钥是相同的,这种加密方式加密速度非常快,适合经常发送数据的场合。缺点是密钥的传输比较麻烦。

 

&非对称加密算法:加密和解密用的密钥是不同的,这种加密方式是用数学上的难解问题构造的,通常加密解密的速度比较慢,适合偶尔发送数据的场合。优点是密钥传输方便。常见的非对称加密算法为RSA、ECC和EIGamal。

 

&AES的工作模式:ECB、CBC、CTR、CFB、OFB

ECB模式(默认):电码本模式 Electronic Codebook Book

CBC模式:密码分组链接模式 Cipher Block Chaining

CTR模式:计算器模式 Counter

CFB模式:密码反馈模式 Cipher FeedBack

OFB模式:输出反馈模式 Output FeedBack

明文到密文加密关系

 

 

 

 

密钥拓展:

将密钥扩充,得到40个新列,分组得到轮密钥,当W[I]中的i是4的倍数时候我们取经过T函数变换的W[i-1]和W[i-4]进行异或操作得到新的W[i]

 

 

 

 

 

 

 

 

 T函数变换

 

 

 

 

 

 

 

 

 

 

 

异或操作

 

 

  

当i不是4的倍数时候,我们只需要将w[i-1]和w[i-4]进行异或就能得到新的w[i]

 

 

 

 

然后就是重复相同的流程得到我们的10组密钥

 

 

重复10次

 

 

 

 

然后就是核心流程(针对明文)

 

 

 

 

字节代换(非线性)

定义S盒/逆S盒,S盒由16*16的字节组成矩阵,S盒不可自逆

 

 

 

 

我们通过S盒将明文分组中的元素逐个进行替换

例如替换19我们需要找到第一列第九个元素

 

 

 

我们需要全部替换

 

 

 

字节代换(线性 左循环位移操作)

第N行就位移N字节

 

 

 

新的矩阵如下

 

 

 

 

 

列混合(非线性)

由固定矩阵乘变换后的矩阵对列进行操作,得到乘积结果放到原来的位置上面

 

 

 

最后得到的

 

 

 

行位移和列混合为矩阵得到了拓展性

轮密钥加

我们将密钥拓展得到的轮密钥和我们的明文分组矩阵进行逐列的异或操作

 

 

 

将得到的结果进行替换反复进行一个循环

这是第一次的轮密钥加

 

 

 

AES-128一般循环10次

AES-192一般循环12次

AES-256一般循环14次

 

 

 

 

Output就是最后的加密密文

小结

AES算法中分组长度只能是128位,面向字节运算而DES是面向位运算

以上是关于AES加密基本原理图解的主要内容,如果未能解决你的问题,请参考以下文章

加密技术02-对称加密-AES原理

我的Android进阶之旅------>Android采用AES+RSA的加密机制对http请求进行加密

https原理以及golang基本实现

aes算法填充方式

TLS/SSL工作原理

HTTPS通信原理