嵌入式后Linux系统AES加解密

1  简介

AES也就是高级加密标准(Advanced Encryption Standard,AES),是一种对称加解密的算法,所谓对称加解密,简单可以理解为,加密方和解密方的**是一样的才行,然后约定加解密的策略,就能完成网络安全通信了。**是AES算法实现加密和解密的根本,对称加密算法之所以对称,是因为这类算法对明文的加密和解密需要使用同一个**。目前AES主要有三种:AES128,AES192,AES256,数字表示的意思是**的位数,位数越大运算越复杂同时也越安全。

AES加密模式有5种: ECB, CBC, CTR, CFB, OFB,比较重要的是CBC模式,这5种模式的特点如下:

1.电码本模式(Electronic Codebook Book (ECB)

这种模式是将整个明文分成若干段相同的小段,然后对每一小段进行加密。

2.密码分组链接模式(Cipher Block Chaining (CBC))

这种模式是先将明文切分成若干小段,然后每一小段与初始块或者上一段的密文段进行异或运算后,再与**进行加密。

嵌入式后Linux系统AES加解密

CBC模式(Cipher Block Chaining)引入了一个新的概念:初始向量IV(Initialization Vector),IV是做什么用的呢?它的作用和MD5的“加盐”有些类似,目的是防止同样的明文块始终加密成同样的密文块;从图中可以看出,CBC模式在每一个明文块加密前会让明文块和一个值先做异或操作。IV作为初始化变量,参与第一个明文块的异或,后续的每一个明文块和它前一个明文块所加密出的密文块相异或。这样以来,相同的明文块加密出的密文块显然是不一样的。

3.计算器模式(Counter (CTR))

计算器模式不常见,在CTR模式中, 有一个自增的算子,这个算子用**加密之后的输出和明文异或的结果得到密文,相当于一次一密。这种加密方式简单快速,安全可靠,而且可以并行加密,但是 在计算器不能维持很长的情况下,**只能使用一次 。

4.密码反馈模式(Cipher FeedBack (CFB)

5.输出反馈模式(Output FeedBack (OFB))

2  应用实例

在实际应用过程中,我们是很难记得住AES模式的具体运算过程,但一般需要开发者之间能确定几个地方,是用AES128还是AES256?是用CBC模式还是ECB模式?如果是CBC模式那么IV定义要约定好,最后就是**要一致。AES算法网上非常多,我们也下载了一份源码下来:git clone https://github.com/dhuertas/AES.git

嵌入式后Linux系统AES加解密

编译命令:gcc gmult.c aes.c main.c -o aes

然后运行:

嵌入式后Linux系统AES加解密

源码比较简单,实际上就是指定了key,然后进行加解密:

嵌入式后Linux系统AES加解密

最后说明一下,为什么要讲解AES加密,是因为下个章节我们会把MQTT通信结合AES加解密来编写一个通信例子,更好的理解mosquitto下MQTT通信的方法。

 

============================================================================================================================================================

如果觉得对您有帮助并想进一步深入学习交流可以扫描以下微信二维码或加入QQ群:928840648

欢迎共同学习成长,有一群爱学习的小伙伴一起勉励!!一起加油!!也可点击

嵌入式后Linux系统AES加解密

 

笔者基于嵌入式系统框架内容如下整理编辑:

嵌入式后Linux系统AES加解密