首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

跟着小生学逆向之AES加密算法

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

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

小结:

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201110A0BD1000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券