您当前的位置: 首页 >  ssl

qianbo_insist

暂无认证

  • 0浏览

    0关注

    399博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

openssl 基本算法小例

qianbo_insist 发布时间:2022-03-16 16:23:20 ,浏览量:0

openssl

openssl支持各种算法,在网络传输中我们需要用到各类算法,尤其是在安全协议里面,hmac算法是必须要用得,dtls协议里面也会用到各类对称算法,下面定义一个类,使用openssl得常用算法中得基本算法。

#pragma once

#include 
#include 
#include 
#include 
#include 
using namespace std;
class c_hmac
{

	string v_key;
	string v_data;
	string v_name;

public:
	c_hmac(string alo_name,string key, string data)
	{
		v_key = key;
		v_data = data;
		v_name = alo_name;
	}
	uint8_t * hmac_algo(unsigned int &len);


};
实现

实现比较简单,版本使用openssl 1.1.1 版

#include "hmac.h"
#include 
#include 
#include 

#pragma comment(lib,"libcrypto.lib")
using namespace std;
#define strcasecmp _stricmp
uint8_t * c_hmac::hmac_algo(unsigned int &len) {
	const EVP_MD * engine = NULL;
	const char *name = v_name.c_str();
	if (strcasecmp("sha512", name) == 0) {
		engine = EVP_sha512();
	}
	else if (strcasecmp("sha256", name) == 0) {
		engine = EVP_sha256();
	}
	else if (strcasecmp("sha1", name) == 0) {
		engine = EVP_sha1();
	}
	else if (strcasecmp("md5", name) == 0) {
		engine = EVP_md5();
	}
	else if (strcasecmp("sha224", name) == 0) {
		engine = EVP_sha224();
	}
	else if (strcasecmp("sha384", name) == 0) {
		engine = EVP_sha384();
	}
	else {
		cout             
关注
打赏
1663161521
查看更多评论
0.1651s