当前位置: 首页 > news >正文

【常见开源库的二次开发】基于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系统

图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

perl Configure VC-WIN632

出现没有找到dmake的错误

修改makefile文件

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

再次nmake && nmake install进行编译

生成以下目录:

 

四、Linux编译openssl3.0

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>
#endifusing  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.cppg++ $^ -o $@ -I/usr/local/include -L/usr/local/lib -lcrypto

 

相关文章:

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

目录&#xff1a; 目录&#xff1a; 一、什么是openssl&#xff1f; 二、所需要具备的开发工具 三、Windows上编译OpenSSL3.0 四、Linux编译openssl3.0 一、什么是openssl&#xff1f; OpenSSL 是一个开源的软件库&#xff0c;它提供了一系列加密工具和协议&#xff0c;主要用…...

前端时间格式传入后端负载里面没有东西

我是因为没有将时间值格式化&#xff0c;所有负载没有东西 <el-col :md"6"><el-form-item label"创建时间" prop"createTime"><el-date-picker v-model"queryParams.createTime" type"date" change"ha…...

BUCK电源芯片,电气参数,极限参数,工作特性,引脚功能

概述 在应用DC-DC开关电源芯片时&#xff0c;通常需要关注以下参数&#xff0c;同步与非同步&#xff0c;输入电压&#xff0c;输入电流&#xff0c;输出电压&#xff0c;输出电流&#xff0c;输入输出电容的选择&#xff1b;mosfet选型&#xff0c;电感选型&#xff0c;功耗&a…...

学习小记-使用Redis的令牌桶算法实现分布式限流

在介绍令牌桶算法前先介绍一下漏桶算法&#xff08;Leaky Bucket&#xff09; 漏桶算法&#xff08;Leaky Bucket&#xff09; 漏桶算法是一种固定容量的容器模型&#xff0c;它通过控制数据流入和流出的速度来限制数据的传输速率。漏桶算法的主要特点包括&#xff1a; 固定…...

electron + express 实现 vue 项目客户端部署

写在前面 作为一个前端程序员&#xff0c;如何实现从前端到客户端的跨越&#xff0c;可能是一个很难实现的事。但客户需求千奇百怪&#xff0c;偶尔遇到一个非要客户端的&#xff0c;如何应对&#xff1f; 那Electron可能真是你福音。具体它有哪些功能&#xff0c;可自行官网…...

千万慎投!自引率高达93%!这16本On hold正处于高危状态,无法检索,剔除岌岌可危中!近四年镇压期刊“出狱”情况一览

本周投稿推荐 SCI • 能源科学类&#xff0c;1.5-2.0&#xff08;25天来稿即录&#xff09; • CCF推荐&#xff0c;4.5-5.0&#xff08;2天见刊&#xff09; • 生物医学制药类&#xff08;2天逢投必中&#xff09; EI • 各领域沾边均可&#xff08;2天录用&#xff09…...

【数据结构】排序——快速排序

前言 本篇博客我们继续介绍一种排序——快速排序&#xff0c;让我们看看快速排序是怎么实现的 &#x1f493; 个人主页&#xff1a;小张同学zkf ⏩ 文章专栏&#xff1a;数据结构 若有问题 评论区见&#x1f4dd; &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 ​ 目录 …...

Matlab 怎么查找矩阵中所有0的数据并赋值

index find(X40); X4(index)57.71527;...

开发一个HTTP模块

开发一个HTTP模块 HTTP模块的数据结构ngx_module_t模块的数据结构ngx_http_module_t数据结构ngx_command_s 数据结构 定义一个HTTP模块处理用户请求返回值获取URI和参数方法名URIURL协议版本 获取HTTP头获取HTTP包体 发送响应发送HTTP头发送内存中的字符串作为包体返回一个Hell…...

vue2实现复制,粘贴功能,使用vue-clipboard2插件

一、需求说明 在项目中 点击按钮 复制 某行文本是很常见的 应用场景&#xff0c; 在 Vue 项目中实现 复制功能 需要借助 vue-clipboard2 插件。 二、代码实现 1、安装 vue-clipboard2 依赖 &#xff08; 出现错误的话&#xff0c;可以试试切换成淘宝镜像源 npm config set r…...

【软件测试】 1+X初级 功能测试试题

【软件测试】 1X初级 功能测试试题 普通员工登录系统&#xff0c;在“个人信息维护”模块&#xff0c;可以查看和维护个人信息。个人信息维护需求包括用户&#xff08;UI&#xff09;页面、业务规则两部分。 UI 界面 个人信息维护 修改基本信息 业务规则 1. 个人信息维护页面…...

zynq启动和程序固化流程

普通FPGA启动 FPGA的启动方式主要包含主动模式、被动模式和JTAG模式。 主动模式&#xff08;AS模式&#xff09; 当FPGA器件上电时&#xff0c;它作为控制器从配置器件EPCS中主动发出读取数据信号&#xff0c;并将EPCS的数据读入到自身中&#xff0c;实现对FPGA的编程。这种…...

CSS3实现彩色变形爱心动画【附源码】

随着前端技术的发展&#xff0c;CSS3 为我们提供了丰富的动画效果&#xff0c;使得网页设计更加生动和有趣。今天&#xff0c;我们将探讨如何使用 CSS3 实现一个彩色变形爱心加载动画特效。这种动画不仅美观&#xff0c;而且可以应用于各种网页元素&#xff0c;比如加载指示器或…...

【JVM基础篇】Java的四种垃圾回收算法介绍

文章目录 垃圾回收算法垃圾回收算法的历史和分类垃圾回收算法的评价标准标记清除算法优缺点 复制算法优缺点 标记整理算法&#xff08;标记压缩算法&#xff09;优缺点 分代垃圾回收算法&#xff08;常用&#xff09;JVM参数设置使用Arthas查看内存分区垃圾回收执行流程分代GC算…...

Kodcloud可道云安装与一键发布上线实现远程访问详细教程

文章目录 1.前言2. Kodcloud网站搭建2.1. Kodcloud下载和安装2.2 Kodcloud网页测试 3. cpolar内网穿透的安装和注册4. 本地网页发布4.1 Cpolar云端设置4.2 Cpolar本地设置 5. 公网访问测试6.结语 1.前言 本文主要为大家介绍一款国人自研的在线Web文件管理器可道云&#xff0c;…...

python杨辉三角的两种书写方式

第一种&#xff08;设置二维列表设置每个元素为0进行替换元素&#xff09; 代码演示&#xff1a; n eval(input("请输入想要的行数")) lst[[0 for j in range(n)] for i in range(n)] # lst2[[0]*n]*n for i in range(n):for j in range(i1):if j0 or ji:lst[i][j…...

【CSS in Depth 2精译】2.5 无单位的数值与行高

当前内容所在位置 第一章 层叠、优先级与继承第二章 相对单位 2.1 相对单位的威力2.2 em 与 rem2.3 告别像素思维2.4 视口的相对单位2.5 无单位的数值与行高 ✔️2.6 自定义属性2.7 本章小结 2.5 无单位的数值与行高 有些属性允许使用无单位的数值&#xff08;unitless value…...

【人脸识别、Python实现】PyQt5人脸识别管理系统

PyQt5人脸识别管理系统 项目描述主要功能效果展示获取源码 项目描述 接的一个基于宿舍管理系统与人脸识别的小单子。然后我把它优化了一些&#xff0c;现在开源一下。有需要的小伙伴自取&#xff0c;点个免费的关注就行 主要功能 1、录入学生基本信息、录入人脸 2、主页面展…...

软设之观察者模式

设计模式中&#xff0c;观察者模式的意图是:定义对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。 比如说&#xff0c;有一个新闻网站&#xff0c;订阅的用户众多&#xff0c;假如说管理员发布了一…...

deep learning 环境配置

1 NVIDIA驱动安装 ref link: https://blog.csdn.net/weixin_37926734/article/details/123033286 2 cuda安装 ref link: https://blog.csdn.net/qq_63379469/article/details/123319269 进去网站 https://developer.nvidia.com/cuda-toolkit-archive 选择想要安装的cuda版…...

MOSFET栅极电阻选型实战:从波形分析到最佳阻值确定(附IRF540实测数据)

MOSFET栅极电阻选型实战&#xff1a;从波形分析到最佳阻值确定&#xff08;附IRF540实测数据&#xff09; 在电力电子设计中&#xff0c;MOSFET的栅极电阻选型往往被工程师视为"小问题"&#xff0c;但实际调试中却可能成为影响系统稳定性的关键因素。记得去年参与一款…...

用OpenCV 4.8.0和C++从零搭建增量式三维重建系统:手把手教你处理多张图片生成稀疏点云

从零构建三维视觉系统&#xff1a;OpenCV与C实战指南 三维重建技术正在改变我们与数字世界的交互方式。想象一下&#xff0c;仅用手机拍摄的几张照片就能重建出物体的三维模型——这正是计算机视觉领域最激动人心的应用之一。本文将带你深入OpenCV 4.8.0的底层实现&#xff0c;…...

Linux文件传输利器SCP命令使用详解与实战技巧

在Linux系统管理和运维中&#xff0c;文件传输是日常高频操作之一。无论是本地与远程服务器之间的数据同步&#xff0c;还是跨服务器直接传输文件&#xff0c;scp&#xff08;Secure Copy Protocol&#xff09;都是最常用的工具之一。它基于SSH协议&#xff0c;提供加密传输能力…...

抽象类抽象方法

抽象类与抽象方法的核心关系抽象类中可以包含0到多个抽象方法&#xff0c;抽象方法必须存在于抽象类中。抽象类的作用是为子类提供通用模板&#xff0c;强制子类实现特定行为规范&#xff0c;避免设计随意性。public abstract class Person {// 具体方法&#xff1a;子类可直接…...

REX-UniNLU与LaTeX协同工作:智能学术论文写作助手

REX-UniNLU与LaTeX协同工作&#xff1a;智能学术论文写作助手 科研写作的痛点&#xff0c;只有经历过的人才懂&#xff1a;反复调整格式、手动整理参考文献、绞尽脑汁写图表描述... 但现在&#xff0c;AI技术正在改变这一切。 1. 学术写作的新革命 如果你正在写学术论文&#…...

Jenkins使用手册

前提是Jenkins已经部署好在服务器上了&#xff0c;这个手册适用于Jenkins建一个新项目档案点击New Item创建一个新的项目档案点击ok后进入以下配置页面建议勾选第一个选项 Discard builds其他选项的含义这就是让 Jenkins 知道“去哪里拿代码”的核心关卡。去git还是svn厂库去拉…...

IBM与Arm达成战略合作,携手开发“双架构硬件”

IBM正式宣布与Arm达成合作。双方将携手共同开发新型“双架构硬件”&#xff0c;旨在助力企业以更高的灵活性、可靠性与安全性&#xff0c;运行未来的人工智能&#xff08;AI&#xff09;及数据密集型工作负载。这一计算平台充分融合了IBM在系统可靠性、安全性和可扩展性方面的显…...

AI与数据库智能交互:Qwen3-0.6B-FP8实现自然语言转SQL查询

AI与数据库智能交互&#xff1a;Qwen3-0.6B-FP8实现自然语言转SQL查询 你有没有过这样的经历&#xff1f;面对公司后台密密麻麻的数据表&#xff0c;想查点东西&#xff0c;却不知道该怎么写SQL语句。或者&#xff0c;你是个业务人员&#xff0c;每次想分析数据都得找技术同事…...

LLM 是怎么学习的?训练过程大揭秘

系列&#xff1a;大语言模型原理科普&#xff08;5 篇&#xff09; 本篇&#xff1a;第 2 篇 难度&#xff1a;⭐⭐ 零基础 浅显技术 字数&#xff1a;约 9000 字 阅读时间&#xff1a;20 分钟&#x1f4d6; 开篇&#xff1a;LLM 不是生来就懂 想象一下&#xff0c;你刚出生的…...

搞不定CAN总线匹配电阻?实测告诉你120Ω电阻怎么加、阻值怎么测、位置怎么放才不出错

CAN总线终端电阻实战指南&#xff1a;从原理到排错的完整解决方案 当你的CAN总线通信频繁出现TxError或NO ACK错误时&#xff0c;终端电阻配置往往是第一个需要检查的环节。许多工程师虽然知道"两端各加120Ω电阻"的基本原则&#xff0c;但在实际项目中仍然会犯各种看…...