¿Cómo funciona realmente el algoritmo HMACSHA1?

0

Me estoy preparando para una presentación y necesito entender cómo funciona HMACSHA1. Entiendo lo que es una sal y entiendo que hace una serie de ciclos, pero ¿cómo funciona realmente?

¿Cuándo se agrega la sal?

Usando solo la función hash estándar .NET SHA1, ¿cómo puedo recrear un algoritmo HMACSHA1? Me gustaría hacerlo manualmente, no con la implementación de PBKDF2.

Esperaba que los siguientes 2 bloques de código dieran la misma salida ... pero no lo hicieron. ¿Dónde me equivoqué?

HMACSHA1 hmac = new HMACSHA1(System.Text.Encoding.Unicode.GetBytes("test"));
var x = hmac.ComputeHash(System.Text.Encoding.Unicode.GetBytes("test"));
Console.WriteLine(Convert.ToBase64String(x));

SHA1 sha1 = new SHA1Managed();
var y = sha1.ComputeHash(System.Text.Encoding.Unicode.GetBytes("testtest"));
var yy = System.Text.Encoding.Unicode.GetBytes("test").ToString() + y;
var yyy = sha1.ComputeHash(System.Text.Encoding.Unicode.GetBytes(yy));
Console.WriteLine(Convert.ToBase64String(yyy));
    
pregunta Zodiac 01.09.2016 - 09:53
fuente

1 respuesta

2

Estás confundiendo las cosas. HMAC-SHA1 es un " código de autenticación de mensajes basado en Hash " que usa SHA1 como hash. PBKDF2 es una función de derivación de clave. Los HMAC pueden ser primitivos en el contexto de una función de este tipo, pero no son equivalentes.

PUEDES usar un HMAC para crear hashes salados, pero puedes simplemente agregar la sal al valor directamente antes del hashing y lograr lo mismo. Los HMAC se usan más comúnmente para validar la autenticidad de los mensajes.

Para la pregunta .net, le sugiero que la haga en stackoverflow, pero puede echar un vistazo a la HMACSHA1 class que se encuentra en el espacio de nombres System.Security.Cryptography.

    
respondido por el Stephane 01.09.2016 - 11:53
fuente

Lea otras preguntas en las etiquetas