赞
踩
OpenSSL 是一个开源的软件库,它提供了一系列加密工具和协议,主要用于实现安全通信,如在网络上的数据传输。它支持多种加密算法,包括对称加密、非对称加密、散列函数、伪随机数生成器、数字签名、密钥交换以及证书管理等。
在 2020 年 5 月 15 日,OpenSSL 发布了 3.0 版本的 Alpha2 测试版,这个版本的一个显著特点是增加了对中国国家密码管理局推荐的密码算法(国密)的支持,包括 SM2(非对称加密算法)、SM3(散列算法)和 SM4(对称加密算法)。
OpenSSL 不仅是一个独立的工具包,它还被广泛集成到其他软件中,以提供加密和安全通信功能。例如
ssl
模块,用于实现 SSL/TLS 加密。安装好Vs2019社区版本
下载:openssl.vip
安装好ubuntu18.04系统
图2-1 vs2019社区版下载
图2-2 openssl-3.0.0源码下载
图2-3 openssl-3.0.0源码中获取到的文件
openssl.vip安装过程和工具下载
安装vs2019 perl
配置nasm
将这里的nasm压缩包解压
得到这些文件:
配置环境变量:
打开x86编译工具:
生成项目文件perl Configure VC-WIN32
perl Configure VC-WIN64A --prefix=%cd%\out
运行控制台x86 Native Tools Command Prompt for VS2019
nmake
重新生成makefile
perl Configure VC-WIN632
出现没有找到dmake的错误
修改makefile文件
黄色标记处将: /O2 修改为 /Od,并注意去除 /debug项,否则生成的Release版本哦!
再次nmake && nmake install进行编译
生成以下目录:
Linux中的相关配置安装:
root@100ask:~# apt-get install g++
root@100ask:~# apt-get install make
root@100ask:~# apt-get install gdb
root@100ask:~# apt-get install git
root@100ask:~# apt-get install wget
下载openssl源码:
root@100ask:~# wget https://www.openssl.org/source/openssl-3.0.0-alpha2.tar.gz
进行解压源代码:
root@100ask:~# tar -xvf openssl-3.0.0-alpha2.tar.gz
进入子路径:
root@100ask:~# cd openssl-3.0.0-alpha2
生成makefile
root@100ask:~/openssl-3.0.0-alpha2# ./config
#三十二线程编译
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
配置安装在usr/local/ssl
头文件/usr/local/include/openssl
so库文件usr/local/Iib
将此项目示例放入到Linux中:
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 对象的资源。
编写makefile
- first_openss:test_openssl.cpp
- g++ $^ -o $@ -I/usr/local/include -L/usr/local/lib -lcrypto
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。