前言
加密在开发中是必不可少的,然而加密的三方库中 OpenSSL
是不可忽视的存在,基本上哪里都有它。
它是一个开源的加密工具,实现了各种算法,比如:消息摘要,对称加密、非对称加密等等。
接下来就来了解一下使用 CMake
配合 OpenSSL
进行各种加密。
安装
我使用的是 Mac
,所以安装比较容易,使用 HomeBrew
就可以了
配置项目
创建一个 CMake
项目
1
2
3
|
mkdir demo && cd demo
touch CMakeLists.txt
touch main.cpp
|
CMakeLists.txt
内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
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
里,内容如下
1
2
3
4
5
6
7
|
#include <iostream>
#include <openssl/crypto.h>
using namespace std;
int main(int argc, char *argv[]) {
cout << SSLeay_version(SSLEAY_VERSION) << endl;
return 0;
}
|
编译执行
1
2
3
4
|
mkdir build && cd build
cmake ..
make
./openssl_demo
|
最后输出如下
1
|
OpenSSL 3.4.0 22 Oct 2024
|
顺便说一下不使用 CMake
的方式
main.cpp
的内容如下,稍微和上面的有点不一样
1
2
3
4
5
6
7
|
#include <iostream>
#include <openssl/opensslv.h>
using namespace std;
int main(int argc, char *argv[]) {
cout << OPENSSL_VERSION_TEXT << endl;
return 0;
}
|
编译执行
1
2
|
g++ main.cpp -lssl -lcrypto -I/opt/homebrew/opt/openssl/include -L/opt/homebrew/opt/openssl/lib
./a.out # 没有指定名字默认是 a.out
|
结果和上面的一样,就不贴了。
这里直接指定了 OpenSSL
的头文件的库的地址,不然会找不到,每个人的路径可能不一样要注意改成自己的。
总结
OpenSSL
还是非常重要的,不要求你会实现加解密的算法,但是使用还是要会的。