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

打印 上一主题 下一主题

主题 517|帖子 517|积分 1551



目次:

   目次:
  一、什么是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体系

图2-1 vs2019社区版下载


图2-2 openssl-3.0.0源码下载


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

三、Windows上编译OpenSSL3.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
  1. perl Configure VC-WIN632
复制代码

出现没有找到dmake的错误

修改makefile文件

 黄色标志处将: /O2 修改为 /Od,并注意去除 /debug项,否则生成的Release版本哦! 
再次nmake && nmake install进行编译

生成以下目次:
 

四、Linux编译openssl3.0

Linux中的相关配置安装:
  1. root@100ask:~# apt-get install g++
复制代码
 

  1. root@100ask:~# apt-get install make
复制代码

  1. root@100ask:~# apt-get install gdb
复制代码

  1. root@100ask:~# apt-get install git
复制代码
 

  1. root@100ask:~# apt-get install wget
复制代码

下载openssl源码: 
  1. root@100ask:~# wget https://www.openssl.org/source/openssl-3.0.0-alpha2.tar.gz
复制代码

进行解压源代码:
  1. root@100ask:~# tar -xvf openssl-3.0.0-alpha2.tar.gz
复制代码
 

进入子路径:
  1. root@100ask:~# cd openssl-3.0.0-alpha2
复制代码
生成makefile
  1. root@100ask:~/openssl-3.0.0-alpha2# ./config
复制代码

#三十二线程编译
  1. root@100ask:~/openssl-3.0.0-alpha2# make -j32
复制代码
#安装so库,头文件和分析文档
  1. root@100ask:~/openssl-3.0.0-alpha2# make install
复制代码
openssl命令行usr/local
  1. root@100ask:~# cd /usr/local
复制代码
 

配置安装在usr/local/ssl
头文件/usr/local/include/openssl
so库文件usr/local/Iib
将此项目示例放入到Linux中:

test_openssl.cpp :生成随机数字
  1. #include  <iostream>
  2. #include  <openssl/rand.h>
  3. #include  <openssl/des.h>
  4. #include  <openssl/bio.h>
  5. #include  <time.h>
  6. #include  <thread>
  7. //  在Windows平台下,为了解决链接问题,需要包含applink.c
  8. #ifdef  _WIN32
  9. #include  <openssl/applink.c>
  10. #endif
  11. using  namespace  std;
  12. int  main(int  argc,  char  *argv[])
  13. {
  14.       cout  <<  "测试  OpenSSL"  <<  endl;
  15.       //  使用时间戳作为随机数的种子
  16.       time_t  t  =  time(0);
  17.       RAND_seed(&t,  sizeof(t));
  18.       auto  mem_bio  =  BIO_new(BIO_s_mem());
  19.       //  生成随机数
  20.       unsigned  char  buf[16]  =  {0};
  21.       int  len  =  sizeof(buf);
  22.       int  re  =  RAND_bytes(buf,  len);
  23.       for  (int  i  =  0;  i  <  len;  i++)
  24.       {
  25.           cout  <<  "["  <<  (int)buf[i]  <<  "]";
  26.       }
  27.       //  清理资源
  28.       BIO_free(mem_bio);
  29.       return  0;
  30. }
复制代码
 利用 OpenSSL 库生成随机数的一个简朴示例,代码首先打印出 "测试 OpenSSL",然后利用当前时间作为种子来初始化随机数生成器。接下来创建了一个内存 BIO 对象,并利用 RAND_bytes 函数生成了一个 16 字节的随机数。最后,代码遍历并打印出随机数的每个字节。在结束前,代码释放了分配给 BIO 对象的资源。

编写makefile
  1. first_openss:test_openssl.cpp
  2.         g++ $^ -o $@ -I/usr/local/include -L/usr/local/lib -lcrypto
复制代码
 




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我爱普洱茶

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表