开源加密库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编译库及其测试示例

相关推荐
晓翔仔20 小时前
网络安全之Web入侵场景
前端·安全·web安全·网络安全·信息安全
Whoami!4 天前
⸢ 拾肆-Ⅱ⸥⤳ 实战检验应用实践(下):自动化检验 & 演练复盘
网络安全·信息安全·红蓝对抗·实战演练
Whoami!5 天前
⸢ 拾伍 ⸥⤳ 安全数智化概念及建设思路
网络安全·信息安全·数智化·智能安全
Whoami!8 天前
⸢ 拾肆-Ⅰ⸥⤳ 实战检验应用实践(上):制定规范 & 开展演练
网络安全·信息安全·红蓝对抗·实战演练
Whoami!10 天前
⸢ 拾叁-Ⅱ⸥⤳ 安全水位评估框架(下):安全水位指标
网络安全·信息安全·安全水位指标
CyberSecurity_zhang11 天前
汽车信息安全--关于安全强度的误区
信息安全·汽车·密码学·安全强度
HaiLang_IT15 天前
2026届 网络与信息安全专业毕业设计选题推荐与指导(含热门研究方向)
网络·安全·信息安全
奥尔特星云大使17 天前
Pikachu-国产轻量化 Web 漏洞靶场
信息安全·sql注入·web漏洞
Whoami!18 天前
6-3〔O҉S҉C҉P҉ ◈ 研记〕❘ 客户端攻击▸通过宏文件实现反向shell
网络安全·信息安全·oscp·宏病毒
Whoami!19 天前
⸢ 拾-Ⅱ⸥⤳ 威胁感知与响应建设方案:威胁运营&威胁响应
网络安全·信息安全·soar·威胁响应