Ai fini dell'impronta digitale dei dati con il minimo rischio di collisione la combinazione della lunghezza (come un intero senza segno a 32 bit memorizzato in aggiunta all'hash) dei dati di input e / o il campionamento di alcuni byte dall'ingresso rafforzeranno significativamente la risultato risultante combinato con l'hash?
Ad esempio:
sha256(data) + length + first_2_bytes_of_data = 304 bits
Nota: (aggiornato)
- La privacy dei dati di input non è fondamentale, più la capacità di rilevare se i dati sono cambiati.
- Anche io uso una funzione di hash a 256 bit in questo esempio, ma la domanda è meno sulla scelta finale della funzione di hash e molto altro sull'aggiunta del 6 aiuto extra di byte.
- La lunghezza in byte dei dati di input sarà sempre variabile ma sempre inferiore o uguale a 2 alla potenza di 32.
- L'output risultante verrà utilizzato sia per la verifica dell'integrità sia come chiave del dizionario per un massimo di 2 ^ 64 elementi (se la collisione della chiave è considerata non pratica o impossibile)