添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

记录一下如何用openssl里面的hmac进行加密的,直接把代码贴出

int main() {
// The secret key for hashing
const char key[] = “0123456789”;

// The data that we're going to hash
char data[] = "hello world";
// Be careful of the length of string with the choosen hash engine. SHA1 needed 20 characters.
// Change the length accordingly with your choosen hash engine.     
unsigned char* result;
unsigned int len = 20;
result = (unsigned char*)malloc(sizeof(char) * len);
HMAC_CTX ctx;
HMAC_CTX_init(&ctx);
// 接下来就是如何进行加密关键步骤
// 这里的第三个参数还可以是 EVP_md5(), EVP_sha224, EVP_sha512, etc
HMAC_Init_ex(&ctx, key, strlen(key), EVP_sha1(), NULL);
HMAC_Update(&ctx, (unsigned char*)&data, strlen(data));
HMAC_Final(&ctx, result, &len);
HMAC_CTX_cleanup(&ctx);
printf("HMAC digest: ");
for (int i = 0; i != len; i++)
    printf("%02x", (unsigned int)result[i]);
    //注意打印的时候一定要是%02x,要不然会乱码
printf("\n");
free(result);
return 0;

}
头文件除了要加stdio.h还有string.h最后是openssl/hmac.h
装openssl 库呢有两种,一种apt-get 一种yum,都差不多,自己找找吧
编译的时候记得加上 –lssl -lcrypto

HMAC: Hash-based Message Authentication Code,即基于Hash的消息鉴别码 /// @file algo_hmac.h #ifndef _ALGO_HMAC_H_ #define _ALGO_HMAC_H_ int HmacEncode(const char * algo, const char * key, unsigned int ...
#include "hmac/hmac.h" void hmac_sha1(const uint8_t *k, /* secret key */ size_t lk, /* length of the key in bytes */ const uint8_t *d, /* data */ size_t ld, /* length of data in bytes */ uint8_t *out, /* output buffer, at least "t" bytes */ size_t *t);
HMAC(Hash-based Message Authentication Code):基于Hash的消息认证码,是一种通过特别计算方式之后产生的消息认证码(MAC),使用密码散列函数,同时结合一个加密密钥。它可以用来保证数据的完整性,同时可以用来作某个消息的身份验证。HMAC运算利用哈希算法,以一个密钥和一个消息作为输入,生成一个消息摘要作为输出。 使用消息摘要算法MD2、MD4、MD5、S...
HMAC(Hash-based Message Authentication Code):基于Hash的消息认证码,是一种通过特别计算方式之后产生的消息认证码(MAC),使用密码散列函数,同时结合一个加密密钥。它可以用来保证数据的完整性,同时可以用来作某个消息的身份验证。HMAC运算利用哈希算法,以一个密钥和一个消息作为输入,生成一个消息摘要作为输出。 使用消息摘要算法MD2、MD4、MD5、SHA-1、SHA-224、SHA-256、SHA-384、SHA-512所构造的HMAC,分别称为HMAC-MD2