当前位置: 首页 > news >正文

Ubuntu 下编译 mbedtls 并使用

本文介绍 Ubuntu22.04 环境下 mbedtls 库的安装与使用方法。

1. mbedtls 源码下载
~/ws$ git clone https://github.com/Mbed-TLS/mbedtls.git #代码克隆成功后,当前目录会生成一个 mbedtls 目录
~/ws$ cd mbedtls #进入源码目录
~/ws/mbedtls$ git submodule update --init #子模块初始化。可能会 fatal,多执行几次
~/ws/mbedtls$ cd tf-psa-crypto #进入 tf-psa-crypto 目录
~/ws/mbedtls/tf-psa-crypto$ git submodule update --init # 可能会 fatal,多执行几次
2. 编译源码
~/ws/mbedtls$ mkdir build && cd build #创建并进入build目录
~/ws/mbedtls/build$ cmake -DUSE_SHARED_MBEDTLS_LIBRARY=On .. #运行 cmake 设置编译为动态库宏(这一步会生成 Makefile)
~/ws/mbedtls/build$ make #编译。编译过程会找不到 python 模块,而报错。缺失那个就用 pip 装那个
~/ws/mbedtls/build$ sudo make install #安装动态库和头文件
~/ws/mbedtls/build$ sudo ldconfig # 之后可能会链接不到动态库,所以执行该命令
3. 测试
3.1 代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>#include "mbedtls/base64.h"
#include "mbedtls/private/bignum.h"
#include "mbedtls/platform.h"int main(int argc, char* argv[])
{printf("hello mebedtls\n");unsigned char date[64] = "hello world,i come from china";unsigned char enbasestring[64];unsigned char debasestring[64];size_t len;printf("date:%s\n",date);mbedtls_base64_encode(enbasestring, 64, &len, date,strlen(date));printf("base64:%s,len:%d\n", enbasestring, (int)len);mbedtls_base64_decode(debasestring, 64, &len,enbasestring, strlen(enbasestring));printf("encode string:%s,len:%d\n", debasestring, (int)len);/// 大数mbedtls_mpi A;mbedtls_mpi_init(&A);mbedtls_mpi_free(&A);return 0;
}
3.2 编译运行
yao@vela:~/mbedtls_test$ gcc test.c -o mbedtls_test -Wall -lmbedcrypto -ltfpsacrypto #编译
yao@vela:~/mbedtls_test$ ./mbedtls_test #运行
hello mebedtls
date:hello world,i come from china
base64:aGVsbG8gd29ybGQsaSBjb21lIGZyb20gY2hpbmE=,len:40
encode string:hello world,i come from china,len:29
4. 参考文档

https://blog.csdn.net/m0_37567738/article/details/146234572?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-3-146234572-blog-127843812.235%5Ev43%5Epc_blog_bottom_relevance_base9&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-3-146234572-blog-127843812.235%5Ev43%5Epc_blog_bottom_relevance_base9&utm_relevant_index=6

https://mbed-tls.readthedocs.io/en/latest/kb/compiling-and-building/compiling-mbedtls-in-mingw/

https://cloud.tencent.com.cn/developer/article/1999433

https://blog.csdn.net/qq_38240926/article/details/100709774

https://blog.csdn.net/JackSparrow_sjl/article/details/118187756?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2defaultBlogCommendFromBaiduRate-3-118187756-blog-129604818.235%5Ev43%5Epc_blog_bottom_relevance_base9&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2defaultBlogCommendFromBaiduRate-3-118187756-blog-129604818.235%5Ev43%5Epc_blog_bottom_relevance_base9&utm_relevant_index=6

http://www.dtcms.com/a/466212.html

相关文章:

  • 外贸公司用什么建网站新东方雅思培训机构官网
  • prompt构建技巧
  • Golang面向对象
  • 从零开始学Wordpress建站杭州建筑工程网
  • 网站品牌词如何优化wordpress 微博客
  • Spring中Date日期序列化与反序列化中格式设置
  • 网站切图怎么收费wordpress前端怎么写
  • 关于网站开发的技术博客智能家庭app下载
  • LLM学习笔记5——本地部署ComfyUI和Wan2.1-T2V-1.3B文生视频模型
  • 广州番禺网站制作公司哪家好网站公司 北京
  • 内网穿透技术保障物联网设备数据安全传输的核心机制与实践
  • 文档输入内容,算术运算,字符串的索引
  • 如何构建高质量的分布式系统监控体系
  • xml网站地图生成器别人 网站 粘贴 html 推广
  • redis 配置学习笔记
  • AI 指数走势透视:红利期或将延续?
  • 光影魔术手4.6.1.670|win中文|图像修改编辑器|安装教程
  • 利用小波分解进行模糊检测pywt.dwt2
  • 试用平台网站建设上海建设安全生产协会网站
  • 用《大前端++》项目特征解析雷总小米汽车的内忧远虑
  • 网络爬虫也叫做网络机器人
  • 台州网站制作 外贸wordpress数据清除
  • 视频网站中滑动列表怎么做的网页设计与制作实训报告的综合优化
  • 昌平手机网站建设北京传媒公司排行榜
  • 专注集团网站建设做网站网址
  • Flink Checkpoint 通用调优方案三种画像 + 配置模板 + 容量估算 + 巡检脚本 + 告警阈值
  • 做一个企业的网站怎么做网站开发合同怎么写
  • 大望路网站建设影楼微网站建设
  • 【滑动窗口专题】第二讲:无重复字符的最长子串
  • 如何简单的并且又能大幅度降低任务队列的锁粒度、提高吞吐量?