HMAC-SHA256算法,即使用SHA-256生成哈希值的HMAC算法。依据HMAC算法和SHA-256算法内容,可知HMAC-SHA256算法的明文分组长度B为512-bit,可通过任意长度密钥K(最小推荐长度为256-bit,一般应大于B),得出长度为256-bit散列值(摘要)。
定义为:
〖HMAC〗_SHA256 (k,m)=□SHA256(k’⊕opad∥SHA256(k’⊕ipad∥m))
其中:
SHA256 为SHA-256加密算法,其输出散列值长度256-bit;
∥ 拼接操作,将两个字符串拼接在一起;
B Hash函数明文分组长度,SHA-256算法中为512-bit;
k 为密钥(secret key);
m 为要认证的消息;
k’ 是从原始密钥 k 导出的另一个密钥(若 k 短于B,则向右填充零,直到与B相同;若k长于B,则对 k 进行一次SHA256散列计算)
opad 内部填充(0x5C5C5C…5C5C,512-bit常量);
ipad 外部填充(0x363636…3636,512-bit常量)
ProductSecret产品密钥:DMLMXLEBWOW6Voks 16个字节
k'="DMLMXLEBWOW6Voks"
k'=0x444d4c4d584c4542574f5736566f6b73000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 64字节 512bit
opad=0x5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C 64字节 512bit
ipad=0x36363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636 64字节 512bit
k’⊕ipad = 0x727b7a7b6e7a73746179610060595d45363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636
k’⊕opad = 0x181110110410191e0b130b6a0a33372f5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c
m="123456" = 0x313233343536
k’⊕ipad∥m =
0x727b7a7b6e7a73746179610060595d45363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636313233343536
SHA256(k’⊕ipad∥m)=0x3abace516abbbe349f053a7e8a2f14049762646f70ddb1bc2c6536a7544f7ae6
k’⊕opad∥SHA256(k’⊕ipad∥m)=
0x181110110410191e0b130b6a0a33372f5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c3abace516abbbe349f053a7e8a2f14049762646f70ddb1bc2c6536a7544f7ae6
SHA256(k’⊕opad∥SHA256(k’⊕ipad∥m))=
4161df4e1022c4e2c4306982877c898bf9f807c886e0e9b59171d26d54407271
4161df4e1022c4e2c4306982877c898bf9f807c886e0e9b59171d26d54407271 ==>在线工具生成HMAC计算、HMAC-MD5、HMAC-SHA1、HMAC-SHA256、HMAC-SHA512在线计算 - 1024Tools