我有以下功能:
static int my_hmac(unsigned char *data, int len, char *password, unsigned char *hmac)
{
unsigned char* digest;
digest = HMAC(EVP_sha1(), password, strlen(password), data, len, NULL, NULL);
memcpy(hmac, digest, 20);
return 0;
}
我在main()
中以这种方式调用它
unsigned char buffer[20]
my_hmac(str, strlen(str), "password", buffer)
使用 HMAC()
函数后我应该调用 libcrypto/libopenssl 的一些空闲内存 api 吗?
最佳答案
既然您标记了您的帖子 openssl
,我就假设您正在使用它。
根据documentation ,由于您将 NULL
作为 md
(倒数第二个参数)的参数传递,因此结果被放置在静态数组中,因此您无需担心那里的释放。
关于返回值,
HMAC()
returns a pointer to the message authentication code orNULL
if an error occurred.
此消息验证码不是您拥有的内存,因此您不应尝试释放它。
关于c - 使用 HMAC() 函数后释放内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45085677/