openssl编程之hmac算法编程示例

image


int openssl_hash() {

	{
		// 输入参数
		const char* key = "xiaohai";
		const char* data = "xiaohai";
		unsigned int hmac_len;

		// 计算HMAC
		unsigned char* result = HMAC(
			EVP_sha256(),                  // 算法
			key, strlen(key),              // 密钥
			(unsigned char*)data, strlen(data), // 消息
			NULL, &hmac_len                // 输出参数
		);

		// 打印结果(16进制)
		printf("HMAC-SHA256: ");
		for (int i = 0; i < hmac_len; i++) {
			printf("%02x", result[i]);
		}
		printf("\n");
	}
	{
		unsigned char buf[4096];
		unsigned char hmac[32];
		unsigned int hmac_len = 32;
		HMAC_CTX* ctx = HMAC_CTX_new();

		HMAC_Init_ex(ctx, "xiaohai", strlen("xiaohai"), EVP_sha256(), NULL);
		
		HMAC_Update(ctx, (unsigned char *)"xiaohai", strlen("xiaohai"));
		
		HMAC_Final(ctx, hmac, &hmac_len);
		HMAC_CTX_free(ctx);

		// 打印结果(16进制)
		printf("HMAC-SHA256: ");
		for (int i = 0; i < hmac_len; i++) {
			printf("%02x", hmac[i]);
		}
		printf("\n");

	}
	return 0;
}
posted @ 2025-09-09 13:53  我不是萧海哇~~~  阅读(21)  评论(0)    收藏  举报