【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)OpenSSL 是一个开源的软件库 它提供了一系列加密工具和协议 主要用于实现安全通信 如在网络上的数据传输

大家好,欢迎来到IT知识分享网。

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

目录:

目录:

一、什么是openssl?

二、所需要具备的开发工具

三、Windows上编译OpenSSL3.0

四、Linux编译openssl3.0


一、什么是openssl?

OpenSSL 是一个开源的软件库,它提供了一系列加密工具和协议,主要用于实现安全通信,如在网络上的数据传输。它支持多种加密算法,包括对称加密、非对称加密、散列函数、伪随机数生成器、数字签名、密钥交换以及证书管理等。

在 2020 年 5 月 15 日,OpenSSL 发布了 3.0 版本的 Alpha2 测试版,这个版本的一个显著特点是增加了对中国国家密码管理局推荐的密码算法(国密)的支持,包括 SM2(非对称加密算法)、SM3(散列算法)和 SM4(对称加密算法)。

OpenSSL 不仅是一个独立的工具包,它还被广泛集成到其他软件中,以提供加密和安全通信功能。例如

  • MySQL:一个流行的开源关系数据库管理系统,可以使用 OpenSSL 来加密客户端和服务器之间的通信。
  • Python一种广泛使用的编程语言,其标准库中包含了使用 OpenSSL 的模块,如 ssl 模块,用于实现 SSL/TLS 加密。
  • libevent:一个事件通知库,它可以在网络编程中使用 OpenSSL 来提供加密的网络通信。

二、所需要具备的开发工具

安装好Vs2019社区版本

下载:openssl.vip

安装好ubuntu18.04系统

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

图2-1 vs2019社区版下载

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

图2-2 openssl-3.0.0源码下载

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

图2-3  openssl-3.0.0源码中获取到的文件

三、Windows上编译OpenSSL3.0

openssl.vip安装过程和工具下载

安装vs2019 perl

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一) 【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一) 【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

 【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

配置nasm 

将这里的nasm压缩包解压

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

 得到这些文件:

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

配置环境变量:

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

打开x86编译工具:

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

生成项目文件perl Configure VC-WIN32

        perl Configure VC-WIN64A –prefix=%cd%\out

运行控制台x86 Native Tools Command Prompt for VS2019

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

nmake

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

重新生成makefile

perl Configure VC-WIN632

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

出现没有找到dmake的错误

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

修改makefile文件

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

 黄色标记处将: /O2 修改为 /Od,并注意去除 /debug项,否则生成的Release版本哦! 

再次nmake && nmake install进行编译

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

生成以下目录:

 【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

四、Linux编译openssl3.0

Linux中的相关配置安装:

root@100ask:~# apt-get install g++ 

 【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

root@100ask:~# apt-get install make 

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

root@100ask:~# apt-get install gdb

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

root@100ask:~# apt-get install git

 【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

root@100ask:~# apt-get install wget

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

下载openssl源码: 

root@100ask:~# wget https://www.openssl.org/source/openssl-3.0.0-alpha2.tar.gz 

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

进行解压源代码:

root@100ask:~# tar -xvf openssl-3.0.0-alpha2.tar.gz

 【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

进入子路径:

root@100ask:~# cd openssl-3.0.0-alpha2 

生成makefile

root@100ask:~/openssl-3.0.0-alpha2# ./config 

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

#三十二线程编译

root@100ask:~/openssl-3.0.0-alpha2# make -j32 

#安装so库,头文件和说明文档

root@100ask:~/openssl-3.0.0-alpha2# make install

openssl命令行usr/local

root@100ask:~# cd /usr/local

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一) 【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

配置安装在usr/local/ssl

头文件/usr/local/include/openssl

so库文件usr/local/Iib

将此项目示例放入到Linux中:

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

test_openssl.cpp :生成随机数字

#include <iostream> #include <openssl/rand.h> #include <openssl/des.h> #include <openssl/bio.h> #include <time.h> #include <thread> // 在Windows平台下,为了解决链接问题,需要包含applink.c #ifdef _WIN32 #include <openssl/applink.c> #endif using namespace std; int main(int argc, char *argv[]) { cout << "测试 OpenSSL" << endl; // 使用时间戳作为随机数的种子 time_t t = time(0); RAND_seed(&t, sizeof(t)); auto mem_bio = BIO_new(BIO_s_mem()); // 生成随机数 unsigned char buf[16] = {0}; int len = sizeof(buf); int re = RAND_bytes(buf, len); for (int i = 0; i < len; i++) { cout << "[" << (int)buf[i] << "]"; } // 清理资源 BIO_free(mem_bio); return 0; } 

 使用 OpenSSL 库生成随机数的一个简单示例,代码首先打印出 “测试 OpenSSL”,然后使用当前时间作为种子来初始化随机数生成器。接下来创建了一个内存 BIO 对象,并使用 RAND_bytes 函数生成了一个 16 字节的随机数。最后,代码遍历并打印出随机数的每个字节。在结束前,代码释放了分配给 BIO 对象的资源。

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

编写makefile

first_openss:test_openssl.cpp g++ $^ -o $@ -I/usr/local/include -L/usr/local/lib -lcrypto 

 【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/126169.html

(0)
上一篇 2025-09-20 21:45
下一篇 2025-09-20 22:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信