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