LV04-02-AES算法-02-AES算法实现

本文主要是AES算法——AES算法实现的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。

点击查看使用工具及版本
PC端开发环境 Windows Windows11
Ubuntu Ubuntu20.04.6的64位版本
VMware® Workstation 17 Pro 17.0.0 build-20800274
终端软件 MobaXterm(Professional Edition v23.0 Build 5042 (license))
Win32DiskImager Win32DiskImager v1.0
Linux开发板环境 Linux开发板 正点原子 i.MX6ULL Linux 阿尔法开发板
uboot NXP官方提供的uboot,NXP提供的版本为uboot-imx-rel_imx_4.1.15_2.1.0_ga(使用的uboot版本为U-Boot 2016.03)
linux内核 linux-4.15(NXP官方提供)
点击查看本文参考资料
点击查看相关文件下载
------

一、OpenSSL简介

AES这种加密算法在网上都是有多种开源库的,C语言版本、Java版本等等。我使用的是嵌入式平台,所以这里学习一下C语言平台AES加解密实现。

1. OpenSSL是什么

首先来了解一下OpenSSL,在计算机网络上,OpenSSL是一个开放原始码软体函式库套件,应用程式可以使用这个套件来进行安全通讯,避免窃听,同时确认另一端连线者的身份。这个套件广泛被应用在网际网路的网页伺服器上。其主要函式库是以C语言所写成,实作了基本的加密功能,实作了SSL与TLS协定。OpenSSL可以运行在OpenVMSMicrosoft Windows以及绝大多数类Unix作业系统上(包括SolarisLinuxMac OS X与各种版本的开放原始码BSD作业系统)。

OpenSSL计划在1998年开始,其目标是发明一套自由的加密工具,在网际网路上使用。OpenSSL以Eric Young以及Tim Hudson两人开发的SSLeay为基础,随著两人前往RSA公司任职,SSLeay在1998年12月停止开发。因此在1998年12月,社群另外分支出OpenSSL,继续开发下去。

2. 支持哪些算法?

OpenSSL支持许多不同的加密算法:

3. 源码在哪?

官网在这里:openssl.org

image-20240824065117057

我们点开第一个OpenSSL Library,可以找到源码仓库:

image-20240824065313650

然后就可以来到github源码仓库了:openssl/openssl: TLS/SSL and crypto library (github.com),仓库里面有多种加密的源码,我们所需要的AES算法源码在这里:

image-20240824065529429

核心主要是这个aes_core.c文件。还有一些ecb、ofb等命名的文件,这些都是不同的加密模式,我这里就用了最基本的ecb模式,也就是直接使用aes_core.c中的函数即可。

二、使用实例

这里就不做具体分析了,详细的可以看这个仓库:openssl: openssl库学习 (gitee.com)

image-20240825134120980

这个demo主要是用来解密和加密WAV格式的音频文件。