CMake OpenSSL 环境搭建
Contents
前言
加密在开发中是必不可少的,然而加密的三方库中 OpenSSL 是不可忽视的存在,基本上哪里都有它。
它是一个开源的加密工具,实现了各种算法,比如:消息摘要,对称加密、非对称加密等等。
接下来就来了解一下使用 CMake 配合 OpenSSL 进行各种加密。
安装
我使用的是 Mac ,所以安装比较容易,使用 HomeBrew 就可以了
brew install openssl
配置项目
创建一个 CMake 项目
mkdir demo && cd demo
touch CMakeLists.txt
touch main.cpp
CMakeLists.txt 内容如下
cmake_minimum_required(VERSION 3.10.2)
set(APP_NAME openssl_demo)
project(${APP_NAME})
set(CMAKE_CXX_STANDARD 11)
# 查找 OpenSSL 包
find_package(OpenSSL REQUIRED)
if (OPENSSL_FOUND)
message(STATUS "Found OpenSSL: ${OPENSSL_VERSION}")
else()
message(FATAL_ERROR "Could not find OpenSSL")
endif()
# Add sources
file(GLOB SOURCES CONFIGURE_DEPENDS
"${PROJECT_SOURCE_DIR}/main.cpp"
)
add_executable(${APP_NAME} ${SOURCES})
# 包含 OpenSSL 头文件路径
target_include_directories(${APP_NAME} PRIVATE ${OPENSSL_INCLUDE_DIRS})
# 链接 OpenSSL 库
target_link_libraries(${APP_NAME} PRIVATE OpenSSL::Crypto OpenSSL::SSL)
内容还是比较简单的,简单的配置了一下,然后把 OpenSSL 链接到程序里。
查看 OpenSSL 版本
我们的代码在 main.cpp 里,内容如下
#include <iostream>
#include <openssl/crypto.h>
using namespace std;
int main(int argc, char *argv[]) {
cout << SSLeay_version(SSLEAY_VERSION) << endl;
return 0;
}
编译执行
mkdir build && cd build
cmake ..
make
./openssl_demo
最后输出如下
OpenSSL 3.4.0 22 Oct 2024
顺便说一下不使用 CMake 的方式
main.cpp 的内容如下,稍微和上面的有点不一样
#include <iostream>
#include <openssl/opensslv.h>
using namespace std;
int main(int argc, char *argv[]) {
cout << OPENSSL_VERSION_TEXT << endl;
return 0;
}
编译执行
g++ main.cpp -lssl -lcrypto -I/opt/homebrew/opt/openssl/include -L/opt/homebrew/opt/openssl/lib
./a.out # 没有指定名字默认是 a.out
结果和上面的一样,就不贴了。
这里直接指定了 OpenSSL 的头文件的库的地址,不然会找不到,每个人的路径可能不一样要注意改成自己的。
总结
OpenSSL 还是非常重要的,不要求你会实现加解密的算法,但是使用还是要会的。