SHA1,HMACSHA1,SHA256,HMACSHA256,BASE64

https://download.csdn.net/download/iamshuke/10172046

 

使用openssl庫

https://blog.csdn.net/qq_33163046/article/details/84035853

 

例子

hmac_sha256.c

gcc hmac_sha256.c -o hmac_sha256 -lssl

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/sha.h>
#include <unistd.h>
#include <openssl/evp.h>
#include <openssl/aes.h>
#include <openssl/hmac.h>

void hmac_sha256(const char* key, int key_len, const char* data, int date_len,  unsigned char* out, unsigned int* out_len)
{
	HMAC_CTX ctx;

	const EVP_MD * engine = EVP_sha256();


	HMAC_CTX_init(&ctx);
	HMAC_Init_ex(&ctx, (char *)key, key_len, engine, NULL);
	HMAC_Update(&ctx, (unsigned char*)data, date_len);
	HMAC_Final(&ctx, out, out_len);


	HMAC_CTX_cleanup(&ctx);

}

void HexArrayToLowString(unsigned char *hexarray,int length,unsigned char *string)
{
	const unsigned char Num2CharTable[] = "0123456789abcdef";	
	int i = 0;

	while(i < length)
	{
		*(string++) = Num2CharTable[(hexarray[i] >> 4) & 0x0f];
		*(string++) = Num2CharTable[hexarray[i] & 0x0f];
		i++;
	}
	*string = 0x0;
} 
int main(int argc, char **argv)
{
	unsigned char out[64] = {0};
	char outBuf[200] = {0};
	unsigned int out_len = 0;


	char key[50] = "123";
	char data[100] = "test Data";
	if(argc == 3) {
		bzero(key, sizeof(key));
		strcpy(key, argv[1]);
		bzero(data, sizeof(data));
		strcpy(data, argv[2]);
	}


	hmac_sha256(key, strlen(key), data, strlen(data), out, &out_len);
	HexArrayToLowString((unsigned char *)out, out_len, (unsigned char *)outBuf);
	printf("key:<%s>,data:<%s>\nhmac_sha256:<%s>\n", key, data, outBuf);


	return 0;
}

./hmac_sha256 123 test
key:<123>,data:<test>
hmac_sha256:<a7f5c8c626f994482813230854f66700e626208f52d913b9bd6b4e039aab0f41>

驗證網址

http://encode.chahuo.com/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章