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

相关推荐
胡西风_foxww6 天前
Linux下编译安装Nginx
linux·运维·nginx·编译·安装·openssl·pcre
Ho_pe10 天前
ubuntu下openssl签名证书制作流程及验证demo
服务器·ubuntu·openssl
花落已飘11 天前
openssl对称加密代码讲解实战
加密·openssl
花落已飘13 天前
openssl加密算法简介
加密·openssl
石牌桥网管15 天前
OpenSSL 生成根证书、中间证书和网站证书
网络协议·https·openssl
雨雪飘零15 天前
Windows系统使用OpenSSL生成自签名证书
nginx·证书·openssl
许野平24 天前
OpenSSL:生成 DER 格式的 RSA 密钥对
服务器·网络·openssl·rsa·pem·der
Xnah_25 天前
ubuntu 20.4 安装 openssl 3.x
ubuntu·openssl
redwingz1 个月前
openssl签名报错
openssl·random
Anlige1 个月前
PHP实现OPENSSL的EVP_BytesToKey
开发语言·php·openssl·evp