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

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

文章目录

  • [001数据安全传输-多端协议传输平台:Openssl安装和配置 - EVP代码测试](#001数据安全传输-多端协议传输平台:Openssl安装和配置 - EVP代码测试)
  • [1. 安装](#1. 安装)
    • [1.1 windows下安装openssl](#1.1 windows下安装openssl)
    • [1.2 Linux下安装OpenSSL](#1.2 Linux下安装OpenSSL)
  • [2. VS中使用openssl](#2. VS中使用openssl)
  • [3. 测试](#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):

sql 复制代码
./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安装目录

测试代码如下:

c 复制代码
#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

相关推荐
赖small强12 天前
【ZeroRange WebRTC】OpenSSL 与 WebRTC:原理、集成与实践指南
webrtc·openssl·x.509·证书验证·tls/dtls
openHiTLS密码开源社区15 天前
密码学系统的核心防护:FUZZ测试(模糊测试)技术原理与行业实践
openssl·fuzz测试·模糊测试·形式化验证·openhitls
coder4_1 个月前
OpenSSL 加密算法与证书管理全解析:从基础到私有 CA 实战
https·openssl·ssl/tls·加密算法·ca证书
王小义笔记2 个月前
windows电脑如何执行openssl rand命令
windows·openssl
Humbunklung2 个月前
VC++ 使用OpenSSL创建RSA密钥PEM文件
开发语言·c++·openssl
深耕AI3 个月前
Win64OpenSSL-3_5_2.exe【安装步骤】
openssl
看那山瞧那水3 个月前
DELPHI 利用OpenSSL实现加解密,证书(X.509)等功能
delphi·openssl
洋哥网络科技3 个月前
openssl升级
openssl
Lazy Dave4 个月前
gmssl私钥文件格式
网络安全·ssl·openssl
沉在嵌入式的鱼4 个月前
RK3588移植Openssl库
linux·rk3588·openssl