Domanda

Supponendo che abbiamo un salt nel database e che è stato generato in questo modo

$ salt = time ();

Qual è la differenza tra queste 2 righe.

$pass1 = hash('sha1', $password . $salt);

$pass2 = hash_hmac('sha1', $password, $salt);

Non producono lo stesso output. Il primo, la funzione hash accetta 2 parametri, mentre hash_hmac richiede 3 parametri. Penseresti quindi che possiamo ottenere quel terzo parametro extra usando $ salt separatamente (per soddisfare il terzo parametro) invece di concatenarlo con la password ( $ password. $ Salt ) come abbiamo fatto nella riga 2. Ma non è così semplice, i 2 risultati sono diversi. Perché? Cosa sta succedendo esattamente qui?

È stato utile?

Soluzione

Perché HMAC SHA-1 non è uguale a SHA-1 con il messaggio e la chiave concatenati. HMAC è più simile a sha1 ($ salt. Sha1 ($ salt. $ Password)) , ma non esattamente. Wikipedia ha una bella descrizione di HMAC .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top