Ecco una breve domanda: esiste una funzione hash con lunghezza configurabile? E se no, perché no? Sarebbe un problema?
Ecco una breve domanda: esiste una funzione hash con lunghezza configurabile? E se no, perché no? Sarebbe un problema?
Penso che questa domanda sia già stata discussa qui e la risposta è stata come se fosse effettivamente possibile, come esempi come la Skein e spettacolo Keccak. Hanno partecipato a SHA3-Competition nel 2012, in particolare la cosiddetta competizione di hash NIST. Sfiorare la funzionalità del vincitore di questo concorso, attualmente rappresentativo dell'algoritmo SHA-3, potrebbe aiutarti a comprendere che esiste almeno un esempio efficiente per un algoritmo, che in un certo senso consente la manipolazione della lunghezza hash.
Quindi ad esempio la funzione Hash Keccak è, come già detto da Tom Leek, un cosiddetto Sponge-Hash e dà l'opportunità di manipolare la lunghezza dell'Hash risultante per impostazione predefinita. Interessanti da vedere sono, in conclusione, i seguenti due parametri che Keccak sta prendendo:
Se esaminiamo solo in modo esemplificativo la sua funzionalità, vedremo che Keccak funziona con un vettore di stato b che è inizializzato con 0 , contenente 25 parole < strong> w e ognuna di queste parole è composta da w = 2 ^ L bit. Di conseguenza, il vettore di stato ha una lunghezza di b = 25 * w .
n rappresenta la lunghezza di bit del valore hash desiderato. Nella versione che è stata consegnata per la competizione, c'era L = 6 , ciò che implica che la lunghezza del valore di hash effettivo sarà tra 224 e 512 bit. Ma come puoi vedere la lunghezza risultante dell'hash è variable , a seconda dei parametri di input discussi finora. La lunghezza dell'accostato dell'hash, nell'intervallo tra 224 e 512 bit, è solo consuetudine in quanto potresti modificare il parametro L per manipolare la lunghezza.
Ovviamente il Keccak, da quando ormai da due anni ufficialmente lo SHA-3-Algorithm, non finisce qui e questa non era una descrizione molto sofisticata. Inoltre, ci sarà gradualmente XOR-Encryption, che è paragonabile a un codice a blocchi classico. Ma per ulteriori dettagli puoi dare un'occhiata all'articolo wikipedia qui . Penso che entrare nei dettagli relativi a tecnicamente sophysys sarebbe più necessario per rispondere alla tua domanda.
Volevo solo esemplificare l'inizializzazione dei parametri necessari per mostrare che ci sono modi per manipolare la lunghezza dell'hash risultante.
Esistono funzioni di hash con una lunghezza di output configurabile, ma in realtà non le chiamiamo "funzioni hash". Abbiamo Funzioni di derivazione chiave . Inoltre, alcuni design di funzioni hash consentono naturalmente una lunghezza di output configurabile, in particolare funzioni Sponge , un ottimo esempio di Keccak, il prossimo a -Si standard SHA-3. In effetti, NIST è attualmente redazione dello standard e include SHAKE128 e SHAKE256, due usi di Keccak con una lunghezza di uscita configurabile.
Leggi altre domande sui tag hash