Algoritmo di hash che fornisce meno di 10 byte

1

So che è insicuro, ma ho bisogno di un numero di profilo;
Ho bisogno di un algoritmo hash per fornire meno di 10 byte.

    
posta PersianGulf 20.01.2016 - 05:50
fonte

3 risposte

6

A questa domanda è impossibile rispondere senza capire il tuo requisito per la funzione hash.

Dato che siamo in security.se, però, suppongo che tu stia chiedendo una funzione hash sicura. In tal caso, temo che la risposta sia: non si può fare.

Vedete, una funzione di hash è solo un mappatore: esegue il mapping permanente dei dati di dimensione arbitraria a una lunghezza fissa chiave. Niente di più. Ad esempio, una funzione che accetta una stringa e restituisce un numero costante è una funzione di hash perfettamente valida (anche se un po 'inutile).

Ora, le funzioni di hash crittografiche sono una classe di funzioni hash con proprietà aggiuntive. La funzione di hash crittografica ideale ha le seguenti proprietà:

  1. È resistente alle pre-immagini: non puoi trovare facilmente un input che ti fornisca un output specifico più veloce di quello brute-forzante nello spazio di input.
  2. È resistente alle preformazioni secondarie: dato un input specifico, non è facile trovare un secondo input che ti dia lo stesso risultato.
  3. È resistente alle collisioni: non è facile trovare due messaggi che generano lo stesso risultato, anche in presenza di un gran numero di input diversi.

Tutto questo più o meno si basa sul fatto che, anche se lo spazio della chiave è più piccolo dello spazio di input, è ancora troppo grande per essere mappato in modo esaustivo. Altrimenti, potresti dedicare molto tempo a scrivere una tabella di mappatura inversa e quindi avrai un modo semplice per interrompere 1.

Ecco perché è necessario spiegare quali proprietà ci si aspetta da una funzione di hash da 10 byte: le funzioni di hash sicuro standard non funzioneranno per te mantenendo le loro proprietà protette. Ciò non significa, tuttavia, non puoi utilizzarli se i tuoi requisiti sono diversi.

    
risposta data 20.01.2016 - 11:45
fonte
4

Anche se non riesco a pensare a nessuna ragione per cui qualcuno potrebbe limitare un hash a 10 byte, se proprio lo vuoi, immagino che puoi.

Quello che potresti fare è qualcosa di simile a questa risposta: Qual è la migliore funzione hash a 32 bit per le stringhe brevi (nomi dei tag)? dove si ottiene l'md5 della stringa e poi la si tronca su 10 o su molti byte.

Onestamente, a meno che tu non riesca a giustificare il motivo per cui dovresti fare qualcosa del genere, non farlo. Trova un modo per aumentare lo spazio dati allocato in qualcosa che supporti un hash grande come bcrypt. È l'algoritmo per generare hash sicuri, anche se potrebbe sembrare difficile da implementare.

    
risposta data 20.01.2016 - 06:09
fonte
0

Se lo stai utilizzando per calcoli sull'integrità di file o messaggi puoi utilizzare CRC32, o se sei incline a utilizzare un algoritmo crittografico potresti semplicemente prendere i byte inferiore o superiore di qualsiasi output dell'algoritmo hash - sarà coerentemente riproducibile e per lo più unico per i dati che hai cancellato, anche se guarderai a un tasso più alto di collisioni.

    
risposta data 20.01.2016 - 14:53
fonte

Leggi altre domande sui tag