001数据安全传输-多端协议传输平台:Openssl安装和配置 - EVP代码测试

news2024/11/24 14:27:01

001数据安全传输-多端协议传输平台:Openssl安装和配置 - EVP代码测试

文章目录

  • 001数据安全传输-多端协议传输平台:Openssl安装和配置 - EVP代码测试
  • 1. 安装
    • 1.1 windows下安装openssl
    • 1.2 Linux下安装OpenSSL
  • 2. VS中使用openssl
  • 3. 测试

1. 安装

1.1 windows下安装openssl

在这里插入图片描述

在这里插入图片描述
OpenSSL安装完成。

1.2 Linux下安装OpenSSL

下载安装包, 下载地址: https://github.com/openssl/openssl

源码安装包解压缩

.zip格式:

unzip openssl.zip

.tar.gz格式:

tar zxvf openssl.tar.gz

.tar.bz格式:

tar jxvf openssl.tar.gz

进入解压目录, 安装(可参考安装文件INSTALL):

./config
make
make test 		(可选)
make install	 (使用管理员权限执行该命令)

验证是否安装成功

openssl version -a

输出结果

OpenSSL 1.1.1-pre6-dev  xx XXX xxxx
built on: Mon Apr 23 10:53:02 2018 UTC
platform: linux-x86_64
options:  bn(64,64) rc4(16x,int) des(int) idea(int) blowfish(ptr) 
compiler: gcc -fPIC -pthread -m64  -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DNDEBUG
OPENSSLDIR: "/usr/local/ssl"
ENGINESDIR: "/usr/local/lib64/engines-1.1"
Seeding source: os-specific

2. VS中使用openssl

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 测试

在这里插入图片描述
在这里插入图片描述
将openssl安装目录/bin目录下(C:\OpenSSL-Win32\bin)的两个动态库拷贝到工作目录下:

libcrypto-1_1.dll
libssl-1_1.dll

C:\OpenSSL-Win32 是我的openssl安装目录
在这里插入图片描述
测试代码如下:

#define _CRT_SECURE_NO_WARNINGS
//#include <openssl/md5.h>		// md5 头文件
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <openssl/evp.h>

void getMD5(const char* str, char* result)
{
	EVP_MD_CTX* mdctx;
	unsigned int md5_digest_len = EVP_MD_size(EVP_md5());//求属性长度
    //MD5_CTX ctx;
	
	// 初始化
	//MD5_Init(&ctx);
	mdctx = EVP_MD_CTX_new();
	EVP_DigestInit_ex(mdctx, EVP_md5(), NULL);

	// 添加数据
	//MD5_Update(&ctx, str, strlen(str));
	EVP_DigestUpdate(mdctx, str, strlen(str));

	// 计算结果
	unsigned char md[16] = { 0 };
	
	//MD5_Final(md, &ctx);
	EVP_DigestFinal_ex(mdctx, md, &md5_digest_len);

	for (int i = 0; i < 16; ++i)
	{
		sprintf(&result[i * 2], "%02x", md[i]);
	}
	EVP_MD_CTX_free(mdctx);
}

int main()
{
	char result[33] = { 0 };
	getMD5("hello, md5", result);
	printf("md5 value: %s\n", result);
	system("pause");

	return 0;
}

输出结果:

md5 value: 33b3bc8e05b4fcc16bd531dd9adac166

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1093625.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ionic+vue+capacitor系列笔记--常用操作代码合集(图片引用,axios跨域配置,去除按钮波纹)

1.单个图片引用 html <img :src"userImgSrc" />ts <script lang"ts"> import { defineComponent } from "vue"; export default defineComponent({name: "Tab1Page",components: {},setup(props, context) {let url &…

FFmpeg截图命令优化

由于项目要求&#xff0c;需要对摄像机的rtsp流进行截图。一开始我使用了命令&#xff1a; ./ffmpeg -ss 0 -i XXX -f image2 -vframes 1 -s 370*210 -y output.jpg 上述命令抓取rtsp流第0秒&#xff08;当前&#xff09;的图像&#xff0c;将其保存为370*210分辨率的jpg图片…

清理日志后出现 no boot device available,不能启动处理

3号LNS清理日志后出现 no boot device available&#xff0c;不能启动处理 然后 不知道为什么&#xff0c;清理系统日志后&#xff0c;就这样了&#xff0c; 然后按下F11&#xff0c;选择硬盘启动就好了&#xff0c;不要选择USB那个&#xff01; ...... 这样是能启动了&#xf…

延时盲注(CVE-2022-0948)

详解&#xff1a; 延时盲注&#xff0c;也称为时间盲注或延迟注入&#xff0c;是一种利用执行时间差判断是否执行成功的盲注手法。攻击者提交一个对执行时间敏感的SQL语句&#xff0c;通过执行时间的长短来判断注入是否成功。例如&#xff0c;如果注入成功&#xff0c;执行时间…

互联网Java工程师面试题·Java 并发编程篇·第七弹

目录 16、CAS 的问题 17、什么是 Future&#xff1f; 18、什么是 AQS 19、AQS 支持两种同步方式&#xff1a; 20、ReadWriteLock 是什么 21、FutureTask 是什么 22、synchronized 和 ReentrantLock 的区别 23、什么是乐观锁和悲观锁 24、线程 B 怎么知道线程 A 修改了…

零代码编程:用ChatGPT批量采集bookroo网页上的英文书目列表

bookroo网页上有很多不错的英文图书书目。比如这个关于儿童花样滑冰的书单&#xff1a; https://bookroo.com/explore/books/topics/ice-skating 怎么批量下载下来呢&#xff1f; 这个网页是动态网页&#xff0c;要爬取下来比较麻烦&#xff0c;可以先查看源代码&#xff0c;…

06-使用dockerfile构建nginx、redis镜像

主旨 本文使用上一篇文章中说到的dockerfile方式&#xff0c;分别构建一个nginx&#xff0c;一个redis镜像。 环境 linux环境 docker环境 nginx镜像构建 创建目录&#xff0c;并切换至对应目录&#xff1a; [yunweijialocalhost ~]$ mkdir -pv docker/nginx mkdir: 已创建目录 …

redis 缓存设计

1. 前言 学习redis 缓存&#xff0c;可以是为了技术面试&#xff1b;可以是为了应用实践&#xff0c;在开发设计过程中引入缓存&#xff0c;提高性能。比如常见的面试题&#xff1a; 2. 什么是缓存预热、击穿、穿透和雪崩 2.1 缓存预热 缓存预热就是系统上线后&#xff0c;…

Puppeteer结合测试工具jest使用(四)

Puppeteer结合测试工具jest使用&#xff08;四&#xff09; Puppeteer结合测试工具jest使用&#xff08;四&#xff09;一、简介二、与jest结合使用&#xff0c;集成到常规测试三、支持其他的几种四、总结 一、简介 Puppeteer是一个提供自动化控制Chrome或Chromium浏览器的Node…

09. 机器学习- 逻辑回归

文章目录 线性回归回顾逻辑回归 Hi&#xff0c;你好。我是茶桁。 上一节课&#xff0c;在结尾的时候咱们预约了这节课一开始对上一节课的内容进行一个回顾&#xff0c;并且预告了这节课内容主要是「逻辑回归」&#xff0c;那我们现在就开始吧。 线性回归回顾 在上一节课中&a…

【Linux】基本指令-入门级文件操作(二)

目录 基本指令 7 cp指令&#xff08;重要&#xff09; 8 mv指令&#xff08;重要&#xff09; 9 nano指令 10 cat指令 11 echo指令与重定向&#xff08;重要&#xff09; 12 more指令 13 less指令 基本指令 7 cp指令&#xff08;重要&#xff09; 功能&#xff1a;复…

React高级特性之context

例1&#xff1a; createContext // 跨组件通信Context引入createContext import React, { createContext } from react// App传数据给组件C App -- A -- C// 1. 创建Context对象 const { Provider, Consumer } createContext()function SonA () {return (<div>我是…

分布式存储系统Ceph应用详解

Ceph的应用 一、Ceph 存储池(Pool)1.1 Ceph存储池的基本概念1.2 原理1.3 一个Pool资源池应该包含多少PG数&#xff1f;1.4 Ceph 存储池相关管理命令1.4.1 创建1.4.2 查看1.4.3 修改1.4.4 删除 二、 CephFS文件系统MDS接口三、创建CephFS文件系统MDS接口3.1 服务端操作Step1 在管…

【Java学习之道】线程的概念与作用

引言 今天我们将探索多线程编程的基础概念和作用。对于初学者来说&#xff0c;掌握多线程编程是迈向Java高级技能的重要一步。通过本章的学习&#xff0c;你将了解线程是什么以及它在程序开发中的重要性&#xff0c;为你进一步深入学习和实际工作打下坚实的基础。让我们一起来…

学信息系统项目管理师第4版系列27_项目集管理和项目组合管理

1. 项目集发起人 1.1. 负责承诺将组织的资源应用于项目集&#xff0c;并致力于使项目集取得成功的人 1.2. 典型职责 1.2.1. 为项目集提供资金&#xff0c;确保项目集目标与战略愿景保持一致&#xff1b; 1.2.2. 使效益实现交付 1.2.3. 消除项目集管理与交付的困难和障碍 …

单目3D自动标注

这里介绍两种 1. 基于SAM的点云标注 Seal&#xff1a;是一个多功能的自监督学习框架&#xff0c;能够通过利用视觉基础模型的现成知识和2D-3D的时空约束分割自动驾驶数据集点云 Scalability&#xff1a;可拓展性强&#xff0c;视觉基础模型蒸馏到点云中&#xff0c;避免2D和…

应对互联网用户激增与IP地址短缺的挑战

互联网用户激增 随着互联网技术的飞速发展&#xff0c;互联网已经深刻改变了我们的生活方式和商业模式。无论是个人用户还是企业&#xff0c;都越来越依赖互联网进行沟通、娱乐、工作和学习。这一现象导致了互联网用户数量的快速激增。 IP地址的有限性 然而&#xff0c;与此…

码蹄集2230--square 高精度乘低精度,组合数

有种走法&#xff0c;因为需要向上走m步&#xff0c;向右走n步。 显然分子分母分别算出&#xff0c;再相除不太可能&#xff0c;那么分别求出分子和分母的质因子相乘的形式。分子存入up数组中&#xff0c;分母存入down数组中&#xff0c;数组中的元素对应之差final_数组即代表…

OJ项目——用户的登录拦截,我是如何实现的?

目录 前言 1、关于Session该如何处理 简单session回顾&#xff1a; 回顾session的setAttribute、getAttribute : 项目中如何做&#xff1f; 2、登陆拦截器实现 自定义拦截器&#xff1a; 自定义拦截&#xff1a; 前言 博主之前也有出过一期关于拦截器的&#xff0c;大…

STL容器适配器以及仿函数的简单认识

在学c的过程中&#xff0c;我们必不可少的一大工具就是STL&#xff0c;并且要一定程度的了解STL背后的原理。 今天我们来探讨一下STL中stack和queue的容器适配器&#xff0c;以及priority_queue是什么&#xff0c;以及一点仿函数的知识。1.容器适配器 1). 容器适配器 在我们了…