Come funziona davvero l'algoritmo HMACSHA1?

0

Mi sto preparando per una presentazione e ho bisogno di capire come funziona HMACSHA1. Capisco cos'è un sale e capisco che fa un certo numero di cicli, ma come funziona davvero?

Quando viene aggiunto il sale?

Usando solo la funzione di hashing .NET SHA1 standard come posso ricreare un algoritmo HMACSHA1? Mi piacerebbe farlo manualmente, non con l'implementazione PBKDF2.

Mi aspettavo i seguenti 2 blocchi di codice per dare lo stesso risultato ... ma non lo fanno. Dove sono andato storto?

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));
    
posta Zodiac 01.09.2016 - 09:53
fonte

1 risposta

2

Stai confondendo le cose. HMAC-SHA1 è un " codice di autenticazione dei messaggi basato su hash " che utilizza SHA1 come hash. PBKDF2 è una funzione di derivazione chiave. Gli HMAC possono essere primitivi nel contesto di tale funzione, ma non sono equivalenti.

È possibile utilizzare un HMAC per la creazione di hash salati, ma è sufficiente aggiungere semplicemente il sale al valore direttamente prima dell'hashing e ottenere la stessa cosa. Gli HMAC sono più comunemente utilizzati per convalidare l'autenticità dei messaggi.

Per la domanda .net, ti suggerisco di chiedere in StackOverflow ma potresti dare un'occhiata a classe HMACSHA1 presente nello spazio dei nomi System.Security.Cryptography.

    
risposta data 01.09.2016 - 11:53
fonte

Leggi altre domande sui tag