原文:https://blog.csdn.net/qq_28205153/article/details/55798628

 

AES简介

高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的**,具体的加密流程如下图: 
对称加密算法AES 简介
下面简单介绍下各个部分的作用与意义:

  • 明文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。

实际中,一般是通过RSA加密AES的**,传输到接收方,接收方解密得到AES**,然后发送方和接收方用AES**来通信。

本文下面AES原理的介绍参考自《现代密码学教程》,AES的实现在介绍完原理后开始。

AES的基本结构

AES为分组密码,分组密码也就是把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文。在AES标准规范中,分组长度只能是128位,也就是说,每个分组为16个字节(每个字节8位)。**的长度可以使用128位、192位或256位。**的长度不同,推荐加密轮数也不同,如下表所示:

AES **长度(32位比特字) 分组长度(32位比特字) 加密轮数
AES-128 4 4 10
AES-192 6 4 12
AES-256 8 4 14

轮数在下面介绍,这里实现的是AES-128,也就是**的长度为128位,加密轮数为10轮。 

 

。。。

相关文章: