Comprensione dell'algoritmo HMAC (SHA-256)

0

Ho pubblicato una domanda correlata su Stack Overflow , ma ho una domanda più generale su HMAC e SHA256.

Diciamo che voglio generare un hash HMAC per una chiave vuota e un messaggio vuoto. La pagina di Wikipedia mostra " b613679a0814d9ec772f95d778c35fc5ff1697c493715653c6c712144292c5ad " come hash di esempio. Tuttavia, se prendo 64 dei caratteri opad 0x5c ("\") e aggiungo ad esso lo SHA256 di 64 dei caratteri ipad 0x36 ("6"), prendo quindi lo SHA256 dell'intera stringa e ottengo " 6c64aeadc27db5d98c91a8789d59c2ebed85c860072929b06b361fff434e00c2 "come risposta.

Non dovrebbe essere uguale alla risposta all'HMAC vuoto? Penso che capire la differenza qui sia ciò che mi trattiene dall'ottenere il mio algoritmo giusto.

Qualsiasi aiuto o guida (anche a badmouthing a questo punto) sarebbe molto apprezzato!

    
posta Sloan Reynolds 18.08.2015 - 19:29
fonte

1 risposta

3

Ho scritto un semplice script python3 per illustrare:

from hashlib import sha256
opad = bytes(0x5c for i in range(64))
ipad = bytes(0x36 for i in range(64))
print(sha256(opad + sha256(ipad).digest()).hexdigest())

L'output è identico alla stringa che hai visto su wiki.

Ho controllato e posso confermare che i risultati possono essere ottenuti se concateniamo opad con hash con codifica hex di ipad . Dovresti invece concatenare i byte puri.

    
risposta data 18.08.2015 - 19:47
fonte

Leggi altre domande sui tag