-
-
【分享】AES加密算法
-
发表于:
2020-11-10 17:29
4750
-
AES简介
全称:AES(Advanced Encryption Standard)高级加密标准
是一种最常见的对称加密算法,微信小程序加密传输就是用的这个加密算法的
AES具体的加密流程介绍
如上图:明文p是指没有经过加密的数据,密钥k是用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的。密钥为接收方和发送方协商产生的,但不可以在网络上传输,否则将导致密钥的泄露。我们一般是通过非对称加密算法加密密钥,然后在通过网络传输给对方,或者直接面对面的商量密钥,最重要的一个点我们一定要记住,密钥是不能泄露的,否则会被攻击者还原密文,窃取最重要的机密数据。
AES加密函数,上图那个表示经过加密函数处理后的数据,与之对应的是AES解密函数。
设AES解密函数为D,则P=K,C,其中C为明文,K为密钥,P为明文,也就是说,把密文C和密钥K作为解密函数的参数输入,则解密函数会输出明文P。
对称加密算法与非对称加密算法的区别
1)对称加密算法
特点:加密和解密用到的密钥是相同的
注:这种加密方式速度非常快,适合经常发送数据的场合
缺点:密钥的传输比较麻烦。
2)非对称加密算法
特点:加密和解密用的密钥是不同的
注:这种加密方式是用数学上难解问题构成,通常加密解密的速度比较慢,适合偶尔发送数据的场合。
优点:密钥传输方便,常见的非对称加密算法为RSA,ECC和EIGamal
AES的基本结构
我们来看一下AES的基本结构,AES为分组密码,分组密码也就是把明文分成一组一组的,每组的长度相等,每次加密一组数据,直到加密完整个明文。
在AES标准规范中,分组长度只能是128位,也就是说,每个分组为16个字节,每个字节8位,密钥的长度可以使用128位、192位或者258位。
AES128的实现原理
1)AES-128,也就是密钥的长度为128位,加密轮数为10轮
AES的加密公式为C=E(K,P),在加密函数E中,会执行一个轮函数,并且执行10次中国轮函数,这个轮函数的前9次执行操作是一样的,只有第10次有所不同,也就是说,一个明文分组会被加密10轮,AES的核心就是实现一轮的所有操作,AES的处理单位是字节,128位的输入明文分组P和输入密钥K都被分成16个字节,分别记为P=P0 P1到P15和K=K0 K1=K15。
比如:
明文分组为P=abcde一直到p,其中a的字符对应P0 p对应P15,一般明文分组用字节位单位的正方形,矩阵描述,称为状态矩阵,在算法的每一轮中状态矩阵的内容不断发生变化,最后的结果作为密文的输出,该矩阵中字节的排列顺序从上到下,从左到右依次排列。
2)AES中一轮的4个操作
字节代换、行位移、列混合、轮密钥加
1.字节代换:AES的字符代换其实就是一个简单的查表操作,AES定义了一个S盒和一个逆S盒。
2.行位移:就是一个简单的左循环移位操作。
3.列混合:是通过矩阵相乘来实现的,经过移位后的状态矩阵与固定的矩阵相乘,得到混淆后的状态矩阵。
4.轮密钥加:是将128位轮密钥Ki同状态矩阵中的数据进行逐位异或操作。
小结:今天的理论知识比较多,不知道你们有没有学会呢?不过没学会没关系,同学们可以通过扫私聊小生,小生在给大家细细道来。
[注意]APP应用上架合规检测服务,协助应用顺利上架!