Ho letto delle tabelle arcobaleno (che ho confuso con i tavoli hash all'inizio).
Comprendo che usa una funzione di riduzione R(x)
e salvando il valore iniziale P
(testo in chiaro) e il valore hash finale H
Posso "salvare" lo spazio semplicemente salvando (R,P,H)
.
Ma non capisco perché non posso farlo con le tabelle hash: crea "GetNext (x)" function GN(x)
e salva i valori in start e end in chiaro (P1, P2)
e con quello 'salva 'spazio, mentre è chiaro che un attaccante sceglie di calcolare tutti gli hash prima o no.
Ad esempio una funzione di riduzione che restituisce i primi 5 caratteri di md5. Come posso gestire con testo in chiaro che contiene caratteri speciali? Oltre a questo avrò collisioni come:
12211ndjdkxjdns....
12211poiplioiippp...
Questi hash mi daranno il prossimo testo in chiaro dopo la funzione di riduzione, anche se aggiungerò qualcosa di casuale, sarò sempre limitato all'input dell'hash e alla sua lunghezza.
L'ultima cosa: se ho delle tabelle arcobaleno, come posso assicurarmi di non avere testi in chiaro duplicati (collisioni), perché vedo che non posso fare senza l'ordinamento e poi tutta l'idea dello spazio è sparita. Perché non generare solo valori iniziali e finali di testo in chiaro e archiviarli se si desidera risparmiare spazio? Non capisco la logica dietro il tentativo di creare testo in chiaro da hash.