Questo è un seguito di questa risposta .
La risposta è molto buona e mi ha fatto riflettere e fare qualche ricerca. Ho trovato un'altra buona spiegazione su questo sito .
Ad un certo punto, l'autore dice:
If the set of plaintexts is [0123456789]{6} (we want a rainbow table of all numeric passwords of length 6), and the hashing function is MD5(), a hash of a plaintext might be MD5("493823") -> "222f00dc4b7f9131c89cff641d1a8c50". In this case the reduction function R() might be as simple as taking the first six numbers from the hash; R("222f00dc4b7f9131c89cff641d1a8c50") -> "222004". We now have generated another plaintext from the hash of the previous plaintext, this is the purpose of the reduction function.
Tuttavia, non sembra che abbia colto l'uso della riduzione poiché sembra abbastanza arbitraria. In che modo ridurre un hash ai suoi primi numeri aiuta a recuperare il testo in chiaro. La scelta della riduzione (ovvero la selezione dei primi numeri dell'hash) è davvero arbitraria? Potrei invece prendere i sei primi sei numeri, ad esempio, ultimi sei?