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

server/2024/11/27 22:30:52/

目录

1 项目简介

2 功能特性

3 性能优势

4 平台兼容性

5 应用场景

6 特点

7 Windows编译

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

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

#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")
#endifint 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编译库及其测试示例


http://www.ppmy.cn/server/145451.html

相关文章

如何将APK预置到Android系统

文章目录 1. 准备 APK 文件2. 复制 APK 到系统源码目录3. 调整权限和文件结构4. 更新 Android.mk 或 Android.bp如果使用 Android.mk&#xff1a;如果使用 Android.bp&#xff1a; 5. 重新编译 Android 系统6. 检查生成的镜像7. 刷入系统镜像并验证注意事项 要将一个 APK 预置到…

Spring框架深度剖析:特性、安全与优化

文章目录 Spring框架简介主要特性1. 依赖注入&#xff08;Dependency Injection, DI&#xff09;2. 面向切面编程&#xff08;Aspect-Oriented Programming, AOP&#xff09;3. 声明式事务管理4. 强大的MVC框架5. 集成测试支持6. 多种数据访问技术的支持 安全性1. 认证&#xf…

林业产品推荐系统:Spring Boot开发手册

3 系统分析 这部分内容虽然在开发流程中处于最开始的环节&#xff0c;但是它对接下来的设计和实现起着重要的作用&#xff0c;因为系统分析结果的好坏&#xff0c;将直接影响后面环节的开展。 3.1可行性研究 影响系统开发的因素有很多&#xff0c;比如开发成本高就不适合开展&a…

使用flink编写WordCount

1. env-准备环境 2. source-加载数据 3. transformation-数据处理转换 4. sink-数据输出 5. execute-执行 流程图&#xff1a; DataStream API开发 //nightlies.apache.org/flink/flink-docs-release-1.13/docs/dev/datastream/overview/ 添加依赖 <properties>&l…

智能工厂的设计软件 所有设计“方面”(Respect/ Aspect /Facet)的三种类(基/源/根)及设计用意 之2 鲁棒性/完整性/健壮性

Q&A Q9、今天我们从三个词&#xff08;鲁棒性/完整性/健壮性&#xff09;继续讨论智能工厂的设计软件中对应于软件架构&#xff0c;程序框架和编码实现的全部设计“方面”&#xff08;respect/ aspect /facet&#xff09;以及每个“方面”都具有的三种类&#xff08;基/源…

力扣 LRU缓存-146

LRU缓存-146 /* 定义双向链表节点&#xff0c;用于存储缓存中的每个键值对。 成员变量&#xff1a;key和value存储键值对。preb和next指向前一个和后一个节点&#xff0c;形成双向链表。 构造函数&#xff1a;默认构造函数&#xff1a;初始化空节点。参数化构造函数&#xff1…

Python实战 | 使用 Python 的日志库(logging)和 pandas 库对日志数据进行分析

专栏集锦,大佬们可以收藏以备不时之需 Spring Cloud实战专栏:https://blog.csdn.net/superdangbo/category_9270827.html Python 实战专栏:https://blog.csdn.net/superdangbo/category_9271194.html Logback 详解专栏:https://blog.csdn.net/superdangbo/category_9271…

linux学习:VM虚拟机ext4磁盘扩容操作

先把虚拟机关掉&#xff0c;在VM上面配置&#xff1a; 开机进入系统&#xff0c;查看磁盘信息 用df -h看磁盘挂载和使用情况&#xff1a; 使用fdisk -l可以看全部磁盘&#xff1a; 可以看到&#xff0c;我们磁盘已经是65G了&#xff0c;但只挂载了45G出来。 用lsblk命令&…