在windows上用cmake版openssl,mingw编译。
文章目录
需求
前言
一、openssl是什么?
二、openssl安装
1.cmake生成make
2.mingw编译库
三、检验openssl是否安装成功
总结
需求
平台:windows10
cmake:3.0以上(如果没有可自行安装)
mingw:支持c++11以上的编译器
.openssle(CMake版本):OpenSSL-CMake(选择最新版本)
前言
本文是博主个人经验的结晶,初次接触写作希望能得到各位读者的支持与鼓励,请广大读者给予鼓励。同时希望此篇文章能帮助到需要的朋友,请转载时注明出处。
一、openssl是什么?
OpenSSL 具备开放源代码的特点。
它采用 C 语言作为开发工具,并能够支持跨平台的操作系统环境。
通过调用 OpenSSL 的函数即可建立一个 SSL 加密的安全通信通道,
从而确保客户端与服务器之间的数据传输安全。
通过 SSL 协议的应用层协议(如 TCP),用户与服务器之间的通信将得到保护,
而 SSL 协议的优势在于其设计特性,
即与其他应用层协议相互独立,
使得高层的应用层协议(如 HTTP、FTP、Telnet 等)能够透明地建立在之上的特性。
由于 SSL 协议的设计特性,
其在应用层协议通信之前就已经完成了加密算法、通信密钥协商以及服务器认证等准备工作。
在此之后,
所有应用层协议传送的数据都会经过加密处理,
从而保证了通信过程中的隐私性。
该软件包大致可分为三个核心功能模块:SSL协议库、应用程序以及密码算法模块。
它作为专注于密码学的安全开发工具包提供了丰富且全面的功能集合。
BIO机制是一种高级别文件操作接口,在OpenSSL中被提供出来。
随机数的好坏直接决定了生成密钥时安全性。
随着你深入了解和实践使用OpenSSL的功能模块,在这个过程中你可能会逐渐发现许多实用的小功能与技巧。
加密手段能够有效维护数据的一致性。
例如消息验证码(MAC)能够校验用户的加密信息。
另一个用途是用作个人身份标识。
用户密钥可作为安全验证标识。
SSL则基于RSA等公开密钥加密技术建立用户端与服务器端之间的通信机制。
OpenSSL内置命令行工具集完成其全部功能。
然而需要注意的是仅仅将它作为密码库使用并非最佳实践。
OpenSSH则采用该库实现SSH协议的安全通信。
不过我们不应仅将它视为一个普通的密码库而是要充分发挥它的多功能特性。
基于C语言开发的OpenSSL展现出卓越的跨平台性能,在众多操作系统中都能获得良好的运行体验。这些操作系统包括Linux、Windows等,并且也涵盖了BSD系列的操作系统以及MacOS X和VMS等其他系统。这些系统的存在显著扩大了 OpenSSL 的应用范围
二、openssl安装
1.cmake生成make
首先解压已有的openssl工具包,并创建一个用于cmake配置的输出目录。随后打开cmake应用程序,在其用户界面的输入字段中输入对应的openssl源代码路径以及目标输出目录路径,并启动配置过程。当程序运行完毕后,在界面中部会出现选项设置区域,在此菜单中找到并设置CMAKE_INSTALL_PREFIX字段为安装路径的位置,并再次启动配置过程。最后执行完成后再次点击生成按钮即可生成所需的编译指令或构建文件。
2.mingw编译库
打开cmd切换目录到cmake输出位置,然后输入
mingw32-make install
AI写代码
等待编译完成
然后在刚刚安装目录的位置里可以看到生成的文件,并将这些文件复制到明威(mingw)构建工具包所在的路径中即可实现OpenSSL的安全参数配置与应用开发工作流程建立起来
三、检验openssl是否安装成功
1.打开cmd输入 openssl version -a
2.执行c++程序
#include <cstdio>
#include <iostream>
#include <string.h>
#include <openssl/md5.h>
#include <openssl/bio.h>
#include <openssl/evp.h>
int main()
{
unsigned char md[MD5_DIGEST_LENGTH];
char strMd5[MD5_DIGEST_LENGTH+1];
const char* data = "Hello World!";
MD5_CTX c;
if(!MD5_Init(&c))
{
std::cout<<"MD5_Init failed"<<std::endl;
return -1;
}
MD5_Update(&c, data, strlen(data));
MD5_Final(md, &c);
for( int nIndex = 0; nIndex < MD5_DIGEST_LENGTH; nIndex ++ )
{
sprintf(strMd5 + nIndex * 2, "%02x\t", md[nIndex]);
}
std::cout << "加密前的字符串:" << data << std::endl;
std::cout << "Md5加密结果:" << strMd5 << std::endl;
BIO *bio, *b64;
char message[] = "Hello World \n";
b64 = BIO_new(BIO_f_base64());
bio = BIO_new_fp(stdout, BIO_NOCLOSE);
BIO_push(b64, bio);
BIO_write(b64, data, strlen(message));
std::cout << "Base64编码结果:";
BIO_flush(b64);
BIO_free_all(b64);
return 0;
}
AI写代码
编译命令:
g++ test.cpp -o test.exe -l ssl -l crypto -l ws2_32
AI写代码
总结
以上就是通过CMake在Windows平台安装OpenSSL的过程分享。博主在安装过程中遇到了诸多困难,在花费一天时间完成所有配置后终于成功上车。感慨C++库的编译与安装过程相当繁琐。希望所有读者能够顺利地完成编译操作并感受到其中的乐趣与挑战!
