根据我阅读的使用 HMAC SHA256 的各种文档,我了解到:
H (K XOR opad, H (K XOR ipad, text)) 其中 H 在我的例子中是 SHA256。
但是,SHA256 输入只有一个参数,即消息。而 H(K,text) 有两个输入。那么如何计算H(k,text)呢?
我是否应该先用 k 编码文本,然后使用 H(encoded_text),其中编码文本将用作消息?
谢谢你
HMAC(K,m) = H((K ⊕ opad) ∥ H((K ⊕ ipad) ∥ m))。
你的结果是:
H(o_key_pad || H(i_key_pad || TEXT))
你可以在这里找到一个很好的阅读:http: //timdinh.nl/index.php/hmac/
还有以下几乎看起来像我的伪代码:
function hmac (key, message)
opad = [0x5c * blocksize] // Where blocksize is that of the underlying hash function
ipad = [0x36 * blocksize]
if (length(key) > blocksize) then
key = hash(key) // Where 'hash' is the underlying hash function
end if
for i from 0 to length(key) - 1 step 1
ipad[i] = ipad[i] XOR key[i]
opad[i] = opad[i] XOR key[i]
end for
return hash(opad || hash(ipad || message)) // Where || is concatenation
end function