参考:http://www.askyb.com/cpp/openssl-hmac-hasing-example-in-cpp/
名词解释:
HMAC: Hash-based Message Authentication Code,即基于Hash的消息鉴别码
(下面的algo_hmac.h, algo_hmac.cpp 可以直接拿来放到自己的工程中)
本文工程在这里下载
algo_hmac.h
#ifndef _ALGO_HMAC_H_
#define _ALGO_HMAC_H_
int HmacEncode(const char * algo,
const char * key, unsigned int key_length,
const char * input, unsigned int input_length,
unsigned char * &output, unsigned int &output_length);
#endif
algo_hmac.cpp
#include "algo_hmac.h"
#include <openssl/hmac.h>
#include <string.h>
#include <iostream>
using namespace std;
int HmacEncode(const char * algo,
const char * key, unsigned int key_length,
const char * input, unsigned int input_length,
unsigned char * &output, unsigned int &output_length) {
const EVP_MD * engine = NULL;
if(strcasecmp("sha512", algo) == 0) {
engine = EVP_sha512();
}
else if(strcasecmp("sha256", algo) == 0) {
engine = EVP_sha256();
}
else if(strcasecmp("sha1", algo) == 0) {
engine = EVP_sha1();
}
else if(strcasecmp("md5", algo) == 0) {
engine = EVP_md5();
}
else if(strcasecmp("sha224", algo) == 0) {
engine = EVP_sha224();
}
else if(strcasecmp("sha384&