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

目录

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.rhkb.cn/news/479633.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GESP C++等级考试 二级真题(2024年9月)

若需要在线模拟考试&#xff0c;可进入题库中心&#xff0c;在线备考&#xff0c;检验掌握程度&#xff1a; https://www.hixinao.com/tidan/exam-157.html?time1732669362&sid172&index1

upload-labs 靶场(11~21)

免责声明 本博客文章仅供教育和研究目的使用。本文中提到的所有信息和技术均基于公开来源和合法获取的知识。本文不鼓励或支持任何非法活动&#xff0c;包括但不限于未经授权访问计算机系统、网络或数据。 作者对于读者使用本文中的信息所导致的任何直接或间接后果不承担任何…

嵌入式硬件实战基础篇(四)多路直流稳压电源

设计一个多路直流稳压电源 要求设计制作一个多路输出直流稳压电源,可将220 V / 5 0HZ交流电转换为5路直流稳压输出。具体要求&#xff1a; 输出直流电压 12V&#xff0c; 5V;和一路输出3- 15V连续可调直流稳压电源: 输出电流Iom500mA; 稳压系数 Sr≤0.05;

【人工智能】深入解析GPT、BERT与Transformer模型|从原理到应用的完整教程

在当今人工智能迅猛发展的时代&#xff0c;自然语言处理&#xff08;NLP&#xff09;领域涌现出许多强大的模型&#xff0c;其中GPT、BERT与Transformer无疑是最受关注的三大巨头。这些模型不仅在学术界引起了广泛讨论&#xff0c;也在工业界得到了广泛应用。那么&#xff0c;G…

【计算机视觉+MATLAB】自动检测并可视化圆形目标:通过 imfindcircles 和 viscircles 函数

引言 自动检测图像中的圆形或圆形对象&#xff0c;并可视化检测到的圆形。 函数详解 imfindcircles imfindcircles是MATLAB中的一个函数&#xff0c;用于在图像中检测并找出圆形区域。 基本语法&#xff1a; [centers, radii] imfindcircles(A, radiusRange) [centers, r…

17. C++模板(template)1(泛型编程,函数模板,类模板)

⭐本篇重点&#xff1a;泛型编程&#xff0c;函数模板&#xff0c;类模板 ⭐本篇代码&#xff1a;c学习/07.函数模板 橘子真甜/c-learning-of-yzc - 码云 - 开源中国 (gitee.com) 目录 一. 泛型编程 二. 函数模板 2.1 函数模板的格式 2.2 函数模板的简单使用 2.3 函数模板…

学习threejs,设置envMap环境贴图创建反光效果

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.CubeTextureLoader 立…

v-for产生 You may have an infinite update loop in a component render function

参考文章&#xff1a; 报错解析 [Vue warn]: You may have an infinite update loop in a component render function. 另外一个解决方法 例如: MyList 是一个数组&#xff0c;我希望将排序后的结果返回进行for循环&#xff0c;因此设计了一个myMethon函数 <div v-for"…

spring boot框架漏洞复现

spring - java开源框架有五种 Spring MVC、SpringBoot、SpringFramework、SpringSecurity、SpringCloud spring boot版本 版本1: 直接就在根下 / 版本2:根下的必须目录 /actuator/ 端口:9093 spring boot搭建 1:直接下载源码打包 2:运行编译好的jar包:actuator-testb…

【Linux】线程的互斥和同步

【Linux】线程的互斥和同步 线程间的互斥 临界资源&#xff1a;多线程执行共享的资源就叫做临界资源临界区&#xff1a;每个线程内部&#xff0c;访问临界资源的代码&#xff0c;就叫做临界区互斥&#xff1a;任何时刻&#xff0c;互斥保证有且只有一个执行流进入临界区&#…

集合Queue、Deque、LinkedList、ArrayDeque、PriorityQueue详解

1、 Queue与Deque的区别 在研究java集合源码的时候&#xff0c;发现了一个很少用但是很有趣的点&#xff1a;Queue以及Deque&#xff1b; 平常在写leetcode经常用LinkedList向上转型Deque作为栈或者队列使用&#xff0c;但是一直都不知道Queue的作用&#xff0c;于是就直接官方…

亮相全国集群智能与协同控制大会,卓翼飞思无人智能科研方案成焦点

无人集群智能协同技术是人工智能发展的必然趋势&#xff0c;也是我国新一代人工智能的核心研究领域。为加强集群智能与协同控制需求牵引和对接、技术交流和互动&#xff0c;11月23-25日&#xff0c;由中国指挥与控制学会主办的第八届全国集群智能与协同控制大会在贵阳市隆重召开…

Oracle JDK(通常简称为 JDK)和 OpenJDK区别

Java 的开发和运行时环境主要由两种实现主导&#xff1a;Oracle JDK&#xff08;通常简称为 JDK&#xff09;和 OpenJDK。尽管它们都基于同一个代码库&#xff0c;但在一些关键点上有所区别。以下是详细的对比&#xff1a; 1. 基础代码 Oracle JDK&#xff1a; 基于 OpenJD…

损失函数分类

1. NLLLoss&#xff08;负对数似然损失&#xff09; 定义&#xff1a; 直接对预测的概率 p(yi) 的负对数求平均。通常配合 Softmax 使用&#xff0c;输入为对数概率。 优点&#xff1a; 对离散分类问题效果良好。更灵活&#xff0c;用户可以自行计算 Softmax。 缺点&#x…

vue3 数字滚动插件vue3-count-to

安装 npm i vue3-count-to -S 引入 import { CountTo } from vue3-count-to 使用 <countTo :startVal"0" :endVal"57.63" :decimals"0" :duration"3000"></countTo> 所有配置

CodeTON Round 9 (Div. 1 + Div. 2, Rated, Prizes!)(前五道)

A. Shohag Loves Mod 翻译&#xff1a; Shohag 有一个整数 n。请帮他找出一个递增整数序列 &#xff0c;使得 在所有 的对上都满足。 可以证明&#xff0c;在给定的约束条件下&#xff0c;这样的序列总是存在的。 思路&#xff1a; 每个数为下标i*2-1&#xff08;注意这里下…

数据结构之二:表

顺序表代码&#xff1a;SData/SqList/SeqList.h Hera_Yc/bit_C_学习 - 码云 - 开源中国 链表相关代码&#xff1a;SData/ListLink/main.c Hera_Yc/bit_C_学习 - 码云 - 开源中国 leetcode相关代码leetcode/reverse_Link/main.c Hera_Yc/bit_C_学习 - 码云 - 开源中国 本文…

Adaboost集成学习 | Python实现基于NuSVR-Adaboost多输入单输出回归预测

目录 效果一览基本介绍程序设计参考资料效果一览 基本介绍 基于NuSVR-Adaboost多输入单输出回归预测python代码 NuSVR是一种支持向量回归(SVR)算法的变体,用于解决回归问题。SVR是一种监督学习方法,它用于预测连续目标变量,而不是分类标签。NuSVR在SVR的基础上引入了一个…

Vue.js --- 生命周期

1. 前言 在 Vue.js 中&#xff0c;生命周期是指一个 Vue 实例从创建到销毁的过程。Vue 提供了一系列的生命周期钩子&#xff08;lifecycle hooks&#xff09;&#xff0c;让开发者可以在不同的阶段执行特定的代码。了解这些生命周期钩子是构建 Vue 组件的基础&#xff0c;能够…

排序算法之选择排序篇

思想&#xff1a; 每次从未排序的部分找出最小的元素&#xff0c;将其放到已排序部分的末尾 从数据结构中找到最小值&#xff0c;放到第一位&#xff0c;放到最前面&#xff0c;之后再从剩下的元素中找出第二小的值放到第二位&#xff0c;以此类推。 实现思路&#xff1a; 遍…