开源加密库mbedtls及其Windows编译库

目录

[1 项目简介](#1 项目简介)

[2 功能特性](#2 功能特性)

[3 性能优势](#3 性能优势)

[4 平台兼容性](#4 平台兼容性)

[5 应用场景](#5 应用场景)

[6 特点](#6 特点)

[7 Windows编译](#7 Windows编译)

[8 编译静态库及其测试示例下载](#8 编译静态库及其测试示例下载)


1 项目简介

Mbed TLS是一个由ARM Maintained的开源项目,它提供了一个轻量级的加密库,适用于嵌入式系统和物联网设备。这个项目包含了SSL/TLS协议、X.509证书解析、密码算法和各种实用工具,是开发安全网络应用的得力助手。

Mbed TLS起源于 PolarSSL,2015年被ARM收购后更名为Mbed TLS,并逐渐成为物联网领域的标准加密组件。它的设计目标是在资源有限的设备上实现高效而全面的安全功能,同时也适用于服务器端和其他需要高安全性的环境。

项目地址: https://www.trustedfirmware.org/projects/mbed-tls/

2 功能特性

  • TLS与DTLS:支持最新的TLS 1.3协议,可以确保数据在传输过程中的安全性。

  • 加密算法:提供了大量的对称加密算法(如AES、DES)和非对称加密算法(如RSA、ECDSA),以及哈希函数(如SHA系列)。

  • 证书处理:能够进行X.509证书的解析和验证,为认证服务提供便利。

  • 密钥管理:支持密钥生成、导入和导出,以及安全的密钥存储机制。

  • 随机数生成器:保证了加密过程中所需的随机性,符合安全标准。

3 性能优势

Mbed TLS 的代码结构紧凑,优化面向微控制器,因此在低功耗和小内存设备上表现出色。其API简洁明了,易于集成到各种软件项目中。

4 平台兼容性

Mbed TLS 可以在多种操作系统上运行,包括Linux、Windows、FreeRTOS、VxWorks等,也支持Cortex-M、Cortex-A等ARM处理器。此外,它遵循POSIX和ANSI C标准,使得跨平台移植变得简单。

5 应用场景

  • 物联网设备:在智能家居、智能城市等领域的设备间通信中,用于保障数据安全。

  • 移动应用:在Android和iOS应用中,保护用户的隐私信息。

  • 云服务:在服务器端进行安全连接,提高服务质量。

  • 嵌入式系统:在限制资源的环境中实现加密和解密操作。

  • Web应用程序:构建安全的HTTPS服务器,增强网站安全性。

6 特点

  • 开源免费:遵循Apache 2.0许可,允许自由使用和修改。

  • 持续更新:积极跟进安全标准,及时修复漏洞。

  • 社区活跃:拥有广泛的开发者社区,不断推动项目发展,提供技术支持。

  • 模块化设计:可以根据需求选择使用部分功能,降低资源消耗。

7 Windows编译

我们在VS下如果会使用到各种加密,如md5,aes,sha1等等,这些东西在mbedtls库中已经完美实现,我们需要做的就是下载mbedtls并编译。

下载地址:https://github.com/Mbed-TLS/mbedtls

下载完成后解压,目录如下(备注:本文使用的是mbedtls-3.5.2, Visual Studio 2015)

打开visualc文件夹,进入VS2013目录下,找到mbedTLS.sln并打开,然后选择mbedTLS项并生成

生成成功后在Release(x64\elease)目录找到mbedTLS.lib文件,并复制到我们的项目中,接着打开我们的项目属性,找到VS++目录,添加包含目录include\mbedtls和引用目录mbedTLS.lib

然后在我们的项目需要使用的地方添加:

cpp 复制代码
#include "stdafx.h"

#include <stdio.h>
#include <string.h>
#include "./mbedtls/md.h"
#ifdef _WIN64
#pragma comment(lib,"./mbedtls352/lib64/mbedTLS.lib")
#else
#pragma comment(lib,"./mbedtls352/lib32/mbedTLS.lib")
#endif

int mbedtls_md_test(mbedtls_md_type_t md_type)
{
        int len, i;
        int ret;
        const char *message = "mculover666";
        unsigned char digest[32];

        mbedtls_md_context_t ctx;
        const mbedtls_md_info_t *info;

        printf("message is:%s\r\n", message);

        /* 1. init mbedtls_md_context_t structure */
        mbedtls_md_init(&ctx);

        /* 2. get md info structure pointer */
        info = mbedtls_md_info_from_type(md_type);

        /* 3. setup md info structure */
        ret = mbedtls_md_setup(&ctx, info, 0);
        if (ret != 0) {
                goto exit;
        }

        /* 4. start */
        ret = mbedtls_md_starts(&ctx);
        if (ret != 0) {
                goto exit;
        }

        /* 5. update */
        ret = mbedtls_md_update(&ctx, (unsigned char *)message, strlen(message));
        if (ret != 0) {
                goto exit;
        }

        /* 6. finish */
        ret = mbedtls_md_finish(&ctx, digest);
        if (ret != 0) {
                goto exit;
        }

        /* show */
        printf("%s digest context is:[", mbedtls_md_get_name(info));
        len = mbedtls_md_get_size(info);
        for (i = 0; i < len; i++) {
                printf("%02x", digest[i]);
        }
        printf("]\r\n");

exit:
        /* 7. free */
        mbedtls_md_free(&ctx);

        return ret;
}

int main()
{
        mbedtls_md_test(MBEDTLS_MD_SHA256);
        return 0;
}

8 编译静态库及其测试示例下载

下载地址:mbedtls-3.5.2的VS2015编译库及其测试示例

相关推荐
汤姆yu5 天前
AI全生命周期七大安全模块落地指南
人工智能·信息安全·大模型
世界尽头与你11 天前
JavaMelody 未授权访问漏洞
网络安全·信息安全·渗透测试·dast
信息安全失业大专人员15 天前
HTTP/HTTPS 协议精髓与 WAF(Web 应用防火墙)架构防线大底座
web安全·http·信息安全·https·企业信息安全
信息安全失业大专人员15 天前
DDoS 攻击的技术实现与企业防御的“自建 vs 外包”博弈
信息安全·网络攻击模型·ddos·企业信息安全
搞科研的小刘选手16 天前
【大数据方向专题研讨会】第三届大数据与数字化管理国际学术会议(ICBDDM 2026)
大数据·信息安全·数据挖掘·云计算·可视化·供应链·信息管理
信息安全失业大专人员16 天前
零信任时代,802.1X 准入架构是否已成“明日黄花”?
安全·信息安全·安全架构·企业信息安全
爱学习的大牛12316 天前
软考架构师信息安全总结
信息安全·软考
Geometry Fu18 天前
《物联网安全》第2章 密码技术基础
物联网·安全·密码学·密码技术
小鳄鱼爱吃薯片21 天前
MbedTLS库完全指南:从GitHub下载到嵌入式移植
mbedtls
不驚1 个月前
软考信息安全工程师-第七章《访问控制技术原理与应用》
计算机网络·网络安全·信息安全·软考·信息安全工程师