我爱普洱茶 发表于 2024-8-18 04:37:24

【常见开源库的二次开发】基于openssl的加密与解密——openssl熟悉与配置(

https://i-blog.csdnimg.cn/direct/7d7aece1198f42b1b961989837a3c066.jpeg

目次:

   目次:
一、什么是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体系
https://i-blog.csdnimg.cn/direct/03efee4b67f347b7b4d4b8d4f86f551c.png
图2-1 vs2019社区版下载
https://i-blog.csdnimg.cn/direct/f0bdc6a57af84737b6fd141a78d092ee.png
图2-2 openssl-3.0.0源码下载
https://i-blog.csdnimg.cn/direct/f914692f92bc4e8eaff3f24899dd3db9.png
图2-3  openssl-3.0.0源码中获取到的文件
三、Windows上编译OpenSSL3.0

openssl.vip安装过程和工具下载
安装vs2019 perl
https://i-blog.csdnimg.cn/direct/1ae9d95a3d4a40fbbef09e7c2202b2c4.png
https://i-blog.csdnimg.cn/direct/4c8c68a355e94546b8d0a97016fc97bf.png https://i-blog.csdnimg.cn/direct/ca17e1751f674ed6b24553a7ff1531a5.png
https://i-blog.csdnimg.cn/direct/8486d60611ea4ac4b970695e057c9600.png https://i-blog.csdnimg.cn/direct/9c11576bcc1a4567afba2b986b459745.png
 https://i-blog.csdnimg.cn/direct/e057a6aadf614c8491649983136d1594.png
配置nasm 
将这里的nasm压缩包解压
https://i-blog.csdnimg.cn/direct/33c5283af0074c7c9150d10349c2ee2a.png
 得到这些文件:
https://i-blog.csdnimg.cn/direct/b264ce90fb30456895ee64481bfbe012.png
配置环境变量:
https://i-blog.csdnimg.cn/direct/5dffae8535a8422d8ed5c0da3fd7083a.png
打开x86编译工具:
https://i-blog.csdnimg.cn/direct/ccd5a5ba0d254076b431a7b995abd801.png
生成项目文件perl Configure VC-WIN32
        perl Configure VC-WIN64A --prefix=%cd%\out
运行控制台x86 Native Tools Command Prompt for VS2019
https://i-blog.csdnimg.cn/direct/76bcc77c6fbb4d359f3dfaad652453db.png
nmake
https://i-blog.csdnimg.cn/direct/1598beca2e83426bbb599726bd445061.png
重新生成makefile
perl Configure VC-WIN632 https://i-blog.csdnimg.cn/direct/4e479f11ba69458dbe151f882149c16e.png
出现没有找到dmake的错误
https://i-blog.csdnimg.cn/direct/ee4cf3c715fa4164b59c84688c11329a.png
修改makefile文件
https://i-blog.csdnimg.cn/direct/1251518af7fd47b89f6985ba63842eb0.png
 黄色标志处将: /O2 修改为 /Od,并注意去除 /debug项,否则生成的Release版本哦! 
再次nmake && nmake install进行编译
https://i-blog.csdnimg.cn/direct/d4f80ee0dad7405c8db1784c3420b640.png
生成以下目次:
 https://i-blog.csdnimg.cn/direct/560cb7cbe24a46678ac15c7538f94344.png
四、Linux编译openssl3.0

Linux中的相关配置安装:
root@100ask:~# apt-get install g++
 https://i-blog.csdnimg.cn/direct/888d7517535d4720a364113368ec5ed9.png
root@100ask:~# apt-get install make
https://i-blog.csdnimg.cn/direct/789956cd3f4446ef8718698d7ecb0b70.png
root@100ask:~# apt-get install gdb https://i-blog.csdnimg.cn/direct/f2b2e62ee94245c7ac59fea4d26f3514.png
root@100ask:~# apt-get install git  https://i-blog.csdnimg.cn/direct/390b1050492a4a6abe9a5d9e14f47569.png
root@100ask:~# apt-get install wget https://i-blog.csdnimg.cn/direct/d2f94ea3228a4b1889e39ad169a6b09d.png
下载openssl源码: 
root@100ask:~# wget https://www.openssl.org/source/openssl-3.0.0-alpha2.tar.gz
https://i-blog.csdnimg.cn/direct/64d7fcbed88b4583bd21f5cd46db5e7e.png
进行解压源代码:
root@100ask:~# tar -xvf openssl-3.0.0-alpha2.tar.gz  https://i-blog.csdnimg.cn/direct/6f68443db18d4996940da3c1a06e367f.png
进入子路径:
root@100ask:~# cd openssl-3.0.0-alpha2
生成makefile
root@100ask:~/openssl-3.0.0-alpha2# ./config
https://i-blog.csdnimg.cn/direct/5449cd72620a4de780f35f115648922e.png
#三十二线程编译
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 https://i-blog.csdnimg.cn/direct/fab98f7b60da44bab1e1a296b270fec6.png https://i-blog.csdnimg.cn/direct/46172c3b7127458d8264aebd42abf998.png
配置安装在usr/local/ssl
头文件/usr/local/include/openssl
so库文件usr/local/Iib
将此项目示例放入到Linux中:
https://i-blog.csdnimg.cn/direct/f7932910edfd4fa8ab6ab6d3e0056082.png
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

usingnamespacestd;

intmain(intargc,char*argv[])
{
      cout<<"测试OpenSSL"<<endl;
      //使用时间戳作为随机数的种子
      time_tt=time(0);
      RAND_seed(&t,sizeof(t));
      automem_bio=BIO_new(BIO_s_mem());

      //生成随机数
      unsignedcharbuf={0};
      intlen=sizeof(buf);
      intre=RAND_bytes(buf,len);
      for(inti=0;i<len;i++)
      {
          cout<<"["<<(int)buf<<"]";
      }

      //清理资源
      BIO_free(mem_bio);

      return0;
}
 利用 OpenSSL 库生成随机数的一个简朴示例,代码首先打印出 "测试 OpenSSL",然后利用当前时间作为种子来初始化随机数生成器。接下来创建了一个内存 BIO 对象,并利用 RAND_bytes 函数生成了一个 16 字节的随机数。最后,代码遍历并打印出随机数的每个字节。在结束前,代码释放了分配给 BIO 对象的资源。
https://i-blog.csdnimg.cn/direct/3320a6dfd9fd40f49ca739bfafcf389b.png
编写makefile
first_openss:test_openssl.cpp
      g++ $^ -o $@ -I/usr/local/include -L/usr/local/lib -lcrypto
 https://i-blog.csdnimg.cn/direct/952f70fa48b847c299569598a4ca77e0.png
https://i-blog.csdnimg.cn/direct/84969cf38e0e4b7389b5652f042edc67.png


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【常见开源库的二次开发】基于openssl的加密与解密——openssl熟悉与配置(