STM32使用mbedTLS实现SHA1加密算法1、引言[size=10.5000pt]ARM mbedtls
使开发人员可以非常轻松地在(嵌入式产品中加入加密和 SSL/TLS 功能。它提供了具有直观的 API 和可读源代码的 SSL 库。该工具即开即用,可以在大部分系统上直接构建它,也可以手动选择和配置各项功能。
[size=10.5000pt]mbedtls
库提供了一组可单独使用和编译的加密组件,还可以使用单个配置头文件加入或排除这些组件。
[size=10.5000pt]
从功能角度来看,该mbedtls
分为三个主要部分:
[size=10.5000pt]- SSL/TLS
协议实施。
[size=10.5000pt]-
一个加密库。
[size=10.5000pt]-
一个 X.509 证书处理库。
[size=10.5000pt]本文将介绍如何使用[size=10.5000pt]mbedTLS[size=10.5000pt]
在STM32
平台(MDK5编译器)下实现SHA1加密算法。
2、环境配置[size=10.5000pt]
编译器:MDK v5.21
[size=10.5000pt]
安装插件包:ARM.mbedTLS.1.3.1.pack
[size=10.5000pt]
硬件芯片:stm32f103
[size=10.5000pt]
在安装完上述pack
包的情况下新建或打开stm32f103系列工程,打开Manage Run-Time Environment,打开Security并勾选mbed TLS选项,如下图所示。
[size=10.5000pt]
设置完成后工程中就加入了mbedTLS
相关代码,如下所示
[size=10.5000pt]
3、使用示例[size=10.5000pt]
在加入的代码中打开mbedTLS_config.h
文件,根据实际使用算法情况修改改文件,如使用SHA1算法需打开#define MBEDTLS_SHA1_C注释,如下所示
[size=10.5000pt]
[size=10.5000pt]然后在主函数中加入初始化及测试代码,
[size=10.5000pt]int i;
[size=10.5000pt]unsigned char encrypt[] = "admin";
[size=10.5000pt]unsigned char decrypt[20];
[size=10.5000pt]mbedtls_sha1_context sha1_ctx;
[size=10.5000pt]
[size=10.5000pt]mbedtls_sha1_init(&sha1_ctx);
[size=10.5000pt]mbedtls_sha1_starts(&sha1_ctx);
[size=10.5000pt]mbedtls_sha1_update(&sha1_ctx, encrypt, strlen((char *)encrypt));
[size=10.5000pt]mbedtls_sha1_finish(&sha1_ctx, decrypt);
[size=10.5000pt]printf("
加密前:%s
加密后:", encrypt);
[size=10.5000pt]mbedtls_sha1_free(&sha1_ctx);
[size=10.5000pt]for (i = 0; i<20; i++)
[size=10.5000pt]{
[size=10.5000pt] [size=10.5000pt]printf("%02x", decrypt
);
[size=10.5000pt]}
[size=10.5000pt]如下图所示,
[size=10.5000pt]
[size=10.5000pt]上述例子中加密前数据为字符串admin,debug(或串口打印输出)获取到加密后数据如下
[size=10.5000pt]
[size=10.5000pt]可通过http://www.ttmd5.com/hash.php?type=5在线验证加密算法是否正确,
[size=10.5000pt]
[size=10.5000pt]可见验证结果与上述使用mbedTLS计算结果一致。
[size=10.5000pt]
欢迎关注我的公众号“嵌入式大玩家” 后台回复任何技术内容一起学习讨论
有测试吗你?
有的,你选择哪个加密库,就包含哪一个头文件就好
一周热门 更多>