Entendiendo el algoritmo HMAC (SHA-256)

0

He publicado una pregunta relacionada en Desbordamiento de pila , pero tengo una pregunta más general sobre HMAC y SHA256.

Digamos que quiero generar un hash HMAC para una clave en blanco y un mensaje en blanco. La página de Wikipedia muestra " b613679a0814d9ec772f95d778c35fc5ff1697c493715653c6c712144292c5ad " como hash de ejemplo. Sin embargo, si tomo 64 de los caracteres opad 0x5c ("\") y le agrego el SHA256 de los 64 caracteres del ipad 0x36 ("6"), tomo el SHA256 de toda la cadena y obtengo " 6c64aeadc27db5d98c91a8789d59c2ebed85c860072929b06b361fff434e00c2 "como la respuesta.

¿No debería ser esto lo mismo que la respuesta al HMAC en blanco? Creo que entender la diferencia aquí es lo que me impide obtener un algoritmo correcto.

¡Cualquier ayuda u orientación (incluso malas palabras en este punto) sería muy apreciada!

    
pregunta Sloan Reynolds 18.08.2015 - 19:29
fuente

1 respuesta

2

He escrito un script en Python3 simple para ilustrar:

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())

La salida es idéntica a la cadena que has visto en wiki.

Lo he comprobado y puedo confirmar que se pueden obtener sus resultados si concatenamos opad con hash codificado en hexadecimal de ipad . Debes concatenar bytes puros allí en su lugar.

    
respondido por el Cthulhu 18.08.2015 - 19:47
fuente

Lea otras preguntas en las etiquetas