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项目。

  1. 选择新建项目的类型,可以是C执行程序,也可以是C++执行程序。我们选择C执行程序;
  2. 选择项目存放的路径。我们命名项目名称为05_OpenSSL;
  3. 选择语言标准,使用默认的C99标准;
  4. 点击右下角Create俺就,创建项目。

项目中有两个重要文件:main.cCMakeLists.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开发环境相关推荐

  1. eclipse中配置c++开发环境 Eclipse + CDT + MinGW

    转自eclipse中配置c++开发环境 Eclipse + CDT + MinGW 基本框架:Eclipse + CDT + MinGW 背景知识: CDT:CDT 是完全用 Java 实现的开放源码 ...

  2. eclipse配置python开发环境_Eclipse中配置python开发环境详解

    Eclipse中配置python开发环境详解 1.下载python安装包.python-2.6.6.msi.并安装. 默认python会安装在C:\Python26下,查看环境变量,如果没有在path ...

  3. QT - QT中配置MSVC编译环境 以及 VS中配置QT开发环境

    本文主要记录一下如何在 QT5.14.2 中配置 MSVC2017 构建套件,以及在VS2017中配置QT的开发环境.开发环境为 Win10 +  QT5.14.2 + Visual Studio 2 ...

  4. Deepin / UOS 中配置 DTK 开发环境

    文章目录 简版教程 准备 开启开发者模式 配置DTK 开发环境 验证 验证 C++ 开发环境 配置是否成功: 验证 DTK 开发环境 配置是否成功: 验证其它项目 命令配置更新 个人习惯 系列地址: ...

  5. IDEA中配置hadoop开发环境

    IDEA中整合hadoop开发环境 前言: hadoop程序运行在分布式环境下,运行调试MapReduce只需要对应的hadoop相应的依赖jar包就可以,下面以是在伪分布模式下hadoop程序的开发 ...

  6. windows 中配置 Java 开发环境

    配置 Java 开发环境 配置 Java 开发环境 第一步:找到我们需要安装的jdk8对应的安装软件jdk-8u74-windows-x64.exe *注意事项*: 在安装软件前使用cmd命令查看电脑 ...

  7. 在Visual Studio Code中配置GO开发环境

    一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...

  8. 在 Win10 中配置 Linux 开发环境

    很多公司开发用的操作系统是 windows,但 windows 的终端实在难用.win10 发布初期就集成了 linux 子系统,当时还是 beta 版,目前(2018-09-20,我当前 windo ...

  9. mac java偏好设置_在 Mac中配置Java开发环境

    最近买了一台mac pro,晚上在家写java,在配置环境的时候碰到很多问题,现在总结出来,提供给大家. 1.配置Tomcat 1.下载: 从apache官网(http://tomcat.apache ...

最新文章

  1. 基于权因子的图像融合
  2. android 蓝牙传输分包,彻底掌握Android多分包技术(一)
  3. Faster RCNN代码理解(Python) ---训练过程
  4. Spark _08窄依赖和宽依赖stage
  5. 图像卷积与滤波知识点整理(2)
  6. java \t怎么从头开始_通过这些简单的步骤从头开始学习Java
  7. python做excel表格柱状图_Python Excel 绘制柱形图
  8. wxPython做界面的适用性
  9. ImageIO 框架详细解析
  10. java https请求_Spring Cloud Sleuth:分布式请求链路跟踪
  11. JupterNoteBook
  12. 7种最有效的懒人减肥方法,收藏了!
  13. java开发就业困难吗_就业困难期,他们面临着幸福的烦恼
  14. C#网络编程(Socket编程)
  15. Python 批量修改文件后缀
  16. 数据库逻辑结构设计 → E-R图
  17. everedit 格式化json_Bracket 使用指南
  18. 在c语言中 auto的作用,c语言中auto是什么意思
  19. IP广播无法登陆服务器系统,数字IP广播系统操作指南
  20. 美团创始人王兴用实际行动证明,为什么富人更容易创业成功?

热门文章

  1. 在python中使用最小二乘法画出拟合曲线_基于jupyter notebook的python编程-----运用最小二乘法,导入文件数据模拟一元线性回归分析...
  2. tensorflow兼容处理 tensorflow.compat.v1及module ‘tensorflow‘ has no attribute ‘reset_default_graph‘等问题汇总
  3. 20171126,三四两题
  4. 自定义view画走势图(一)
  5. 聊聊2018年的经济和投资情况
  6. 小学计算机教师证面试题目,2018上半年小学信息技术教师资格证面试试题(精选)第二批...
  7. [siggraph13]《使命召唤:黑色行动2》的光照技术
  8. html 清理 多余 样式,webpack去除冗余css样式删除多余css
  9. 超级简单的安卓课程设计——书籍信息查询
  10. 舌尖上的C——三子棋的慢烹细作