和aes同级别的加密算法(跟着小生学逆向之AES加密算法)

和aes同级别的加密算法(跟着小生学逆向之AES加密算法)(1)

今天本来不想起床的,奈何阳光照射到小生的床上,让我想起又是美好的一天,果断出门,但是刚洗漱好弄了个发型,半只脚踏出门外才想起我没有女朋友出去干啥,然后果断的给朋友们来了一波图文教学AES加密算法。

AES简介

全称:AES(Advanced Encryption Standard)高级加密标准

是一种最常见的对称加密算法,微信小程序加密传输就是用的这个加密算法的

AES具体的加密流程介绍

和aes同级别的加密算法(跟着小生学逆向之AES加密算法)(2)

如上图:明文p是指没有经过加密的数据,密钥k是用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的。密钥为接收方和发送方协商产生的,但不可以在网络上传输,否则将导致密钥的泄露。我们一般是通过非对称加密算法加密密钥,然后在通过网络传输给对方,或者直接面对面的商量密钥,最重要的一个点我们一定要记住,密钥是不能泄露的,否则会被攻击者还原密文,窃取最重要的机密数据。

AES加密函数,上图那个表示经过加密函数处理后的数据,与之对应的是AES解密函数。

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

对称加密算法与非对称加密算法的区别

和aes同级别的加密算法(跟着小生学逆向之AES加密算法)(3)

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同状态矩阵中的数据进行逐位异或操作。

小结:今天的理论知识比较多,不知道你们有没有学会呢?不过没学会没关系,同学们可以通过私聊小生,小生在给大家细细道来。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页