HMACSHA256原理解析

需要支持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,

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值