需要支持HMACSHA256算法,GitHub找到源码具体地址https://github.com/aperezdc/hmac-sha256/blob/master/hmac-sha256.c
移植到目标平台,稍作处理测试ok了,原理:
1.输入密钥key和固定的数据(0x36)进行异或操作生成一个64B的数据kx;
2.使用kx+输入数据执行sha256算法得到32B的out;
3.使用密钥key和固定的数据(0x5C)进行异或操作生成一个64B的数据kx';
4.使用kx'+第2步生成的out执行sha256算法得到32B的out,此结果就是HMACSHA256算法输出;
综述:HMAC加密算法是一种基于数据摘要算法和共享密钥的消息认证协议.它可以有效地防止数据在传输过程中被篡改,维护了数据的完整性、可靠性和安全性.
#ifndef HMAC_SHA256_H
#define HMAC_SHA256_H
#define B 64
#define I_PAD 0x36
#define O_PAD 0x5C
#define HMAC_SHA256_DIGEST_SIZE 32 /* Same as SHA-256's output size. */
#define SHA256_DIGEST_SIZE 32
#endif /* !HMAC_SHA256_H */
void hmac_sha256 (const u8 *key, u32 key_len,const u8 *data, u32 data_len,