在CLion中配置OpenSSL开发环境
1.环境
平台:Windows10
开发工具:CLion
OpenSSL:OpenSSL 1.1.1m(32位)
工具链:MingGW530_32
Win32OpenSSL-1_1_1m.msi-网络安全文档类资源-CSDN文库
Windows版本的OpenSSL下载地址Win32/Win64 OpenSSL Installer for Windows - Shining Light Productionshttp://slproweb.com/products/Win32OpenSSL.html
2.SM3摘要Demo
2.1 使用CLion,新建一个C项目。
- 选择新建项目的类型,可以是C执行程序,也可以是C++执行程序。我们选择C执行程序;
- 选择项目存放的路径。我们命名项目名称为05_OpenSSL;
- 选择语言标准,使用默认的C99标准;
- 点击右下角Create俺就,创建项目。
项目中有两个重要文件:main.c 和 CMakeLists.txt 。
main.c :源文件
CMakeLists.txt:CMake的配置文件,用于对软件编译过程进行控制。
2.1运行程序
点击CLion右侧的三角Run按钮,在CLion下方输出程序运行结果。打印出Hello,World!
3. 默认的CMakeList.txt
新建项目中的CMakeLists.txt如下图:
# 指定CMake最低版本要求
cmake_minimum_required(VERSION 3.17)#设置项目名称
project(05_OpenSSL C)#环境变量 CMAKE_C_STANDARD 为99 ,使用C99标准
set(CMAKE_C_STANDARD 99)#生成的执行文件05_OpenSSL ,main.c为生成可执行文件需要的源代码
add_executable(05_OpenSSL main.c)
4. Demo程序:使用OpenSSL的SM3计算摘要
4.1 修改CMakeLists.txt
增加OpenSSL头文件和库,链接库:
cmake_minimum_required(VERSION 3.17)
project(05_OpenSSL C)set(CMAKE_C_STANDARD 99)#定义两个变量,表示头文件路径和库路径
set(INC_DIR D:\\ProgramFiles\\OpenSSL-Win32\\include)
set(LINK_DIR D:\\ProgramFiles\\OpenSSL-Win32\\lib)#依次设置头文件目录、库目录、要链接的库 (在add_executable 之前)
include_directories(${INC_DIR})
link_directories(${LINK_DIR})
link_libraries(openssl libcrypto)add_executable(05_OpenSSL main.c)#链接库 在add_executable之后 03_OpenSSL为工程名 ssl为库名称
target_link_libraries(05_OpenSSL openssl)
其中Windows中OpenSSL安装的路径为:D:\\ProgramFiles\\OpenSSL-Win32\\
4.2 编码main.c
使用SM3计算摘要:
main.c
#include <stdio.h>
#include <string.h>
#include "openssl/evp.h"int main() {printf("Hello, OpenSSL!\n");/* 加载所有算法 */OpenSSL_add_all_algorithms();/* SM3摘要算法 */unsigned char md_value[EVP_MAX_MD_SIZE]; //保存输出的摘要值的数组unsigned int md_len;EVP_MD_CTX *pmdctx = EVP_MD_CTX_new(); //EVP消息结构体char msg1[] = "Test Message1"; //待计算摘要的消息1char msg2[] = "Test Message2"; //待计算只要的消息2int i=0;EVP_MD_CTX_init(pmdctx); //初始化摘要结构体//设置摘要算法和密码算法引擎,这里密码算法使用SM3//算法引擎使用OpenSSL默认引擎,即软算法EVP_DigestInit_ex(pmdctx,EVP_sm3(),NULL);EVP_DigestUpdate(pmdctx,msg1,strlen(msg1)); //调用摘要Update计算msg1的摘要EVP_DigestUpdate(pmdctx,msg2,strlen(msg2)); //调用摘要Update计算msg2的摘要EVP_DigestFinal_ex(pmdctx,md_value,&md_len); //摘要结束,输出摘要值/* 打印结果 */printf("原始数据%s和%s的摘要为:\n",msg1,msg2);for(i=0;i<md_len;i++){printf("%02X ",md_value[i]);}printf("\n");return 0;
}
4.3 运行,输出如下结果:
在CLion中配置OpenSSL开发环境相关推荐
- eclipse中配置c++开发环境 Eclipse + CDT + MinGW
转自eclipse中配置c++开发环境 Eclipse + CDT + MinGW 基本框架:Eclipse + CDT + MinGW 背景知识: CDT:CDT 是完全用 Java 实现的开放源码 ...
- eclipse配置python开发环境_Eclipse中配置python开发环境详解
Eclipse中配置python开发环境详解 1.下载python安装包.python-2.6.6.msi.并安装. 默认python会安装在C:\Python26下,查看环境变量,如果没有在path ...
- QT - QT中配置MSVC编译环境 以及 VS中配置QT开发环境
本文主要记录一下如何在 QT5.14.2 中配置 MSVC2017 构建套件,以及在VS2017中配置QT的开发环境.开发环境为 Win10 + QT5.14.2 + Visual Studio 2 ...
- Deepin / UOS 中配置 DTK 开发环境
文章目录 简版教程 准备 开启开发者模式 配置DTK 开发环境 验证 验证 C++ 开发环境 配置是否成功: 验证 DTK 开发环境 配置是否成功: 验证其它项目 命令配置更新 个人习惯 系列地址: ...
- IDEA中配置hadoop开发环境
IDEA中整合hadoop开发环境 前言: hadoop程序运行在分布式环境下,运行调试MapReduce只需要对应的hadoop相应的依赖jar包就可以,下面以是在伪分布模式下hadoop程序的开发 ...
- windows 中配置 Java 开发环境
配置 Java 开发环境 配置 Java 开发环境 第一步:找到我们需要安装的jdk8对应的安装软件jdk-8u74-windows-x64.exe *注意事项*: 在安装软件前使用cmd命令查看电脑 ...
- 在Visual Studio Code中配置GO开发环境
一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...
- 在 Win10 中配置 Linux 开发环境
很多公司开发用的操作系统是 windows,但 windows 的终端实在难用.win10 发布初期就集成了 linux 子系统,当时还是 beta 版,目前(2018-09-20,我当前 windo ...
- mac java偏好设置_在 Mac中配置Java开发环境
最近买了一台mac pro,晚上在家写java,在配置环境的时候碰到很多问题,现在总结出来,提供给大家. 1.配置Tomcat 1.下载: 从apache官网(http://tomcat.apache ...
最新文章
- 基于权因子的图像融合
- android 蓝牙传输分包,彻底掌握Android多分包技术(一)
- Faster RCNN代码理解(Python) ---训练过程
- Spark _08窄依赖和宽依赖stage
- 图像卷积与滤波知识点整理(2)
- java \t怎么从头开始_通过这些简单的步骤从头开始学习Java
- python做excel表格柱状图_Python Excel 绘制柱形图
- wxPython做界面的适用性
- ImageIO 框架详细解析
- java https请求_Spring Cloud Sleuth:分布式请求链路跟踪
- JupterNoteBook
- 7种最有效的懒人减肥方法,收藏了!
- java开发就业困难吗_就业困难期,他们面临着幸福的烦恼
- C#网络编程(Socket编程)
- Python 批量修改文件后缀
- 数据库逻辑结构设计 → E-R图
- everedit 格式化json_Bracket 使用指南
- 在c语言中 auto的作用,c语言中auto是什么意思
- IP广播无法登陆服务器系统,数字IP广播系统操作指南
- 美团创始人王兴用实际行动证明,为什么富人更容易创业成功?
热门文章
- 在python中使用最小二乘法画出拟合曲线_基于jupyter notebook的python编程-----运用最小二乘法,导入文件数据模拟一元线性回归分析...
- tensorflow兼容处理 tensorflow.compat.v1及module ‘tensorflow‘ has no attribute ‘reset_default_graph‘等问题汇总
- 20171126,三四两题
- 自定义view画走势图(一)
- 聊聊2018年的经济和投资情况
- 小学计算机教师证面试题目,2018上半年小学信息技术教师资格证面试试题(精选)第二批...
- [siggraph13]《使命召唤:黑色行动2》的光照技术
- html 清理 多余 样式,webpack去除冗余css样式删除多余css
- 超级简单的安卓课程设计——书籍信息查询
- 舌尖上的C——三子棋的慢烹细作