Can't a second plaintext string be found which hashes to "482c811da5d5b4bc6d497ffa98491e38"?
Sì, è ancora più facile di quanto tu non teme con MD5, che è rotto; per esempio. è possibile generare collisioni di proposito, anche se non sono sicuro se sia già possibile generare collisioni senza controllare l'input almeno parzialmente.
Potresti voler google "paradosso del compleanno". Chiede: "Qual è la possibilità che due persone in una stanza condividano lo stesso compleanno?" ed è pertinente alla tua domanda.
Ti darà anche i calcoli matematici per calcolare le probabilità di collisioni hash date le dimensioni dell'output della funzione hash e il numero di elementi / password che ti aspetti di hash. Penso che una stima approssimativa che viene spesso utilizzata è che è probabile che si vedano collisioni dopo l'hashing delle password, dove n è la radice quadrata dello spazio di output della funzione hash. Quindi, con il tuo esempio di hash a 128 bit, che inizierebbe approssimativamente ad accadere dopo le password hash 2 ^ 64 (che penserei sia ancora impossibile fare con l'hardware di oggi iff md5 non è ancora completamente rotto, quindi probabilmente non c'è devo ancora prendere il panico, ma inizierei a camminare con calma verso la prossima uscita ...).
And thus, can be entered as MY password into adobe.com, and thus gain illegal entry via a legitimate login?
Probabilmente no, dal momento che Adobe dovrebbe sapere meglio di usare MD5 per le password hash e nemmeno usare un valore salt.
Le password non sono hash con le funzioni di hash veloce bare metal come md5 o sha1 o anche sha256 più (almeno non da chiunque voglia tenerle al sicuro nel mondo di oggi). Queste funzioni di hash sono troppo veloci e possono essere implementate su hardware come schede grafiche gpus parallele (o hardware ancora più specializzato) che possono quindi hash milioni o miliardi di password candidate al secondo (a seconda della funzione di hash utilizzata) alla forza bruta a parola d'ordine. Puoi provarlo tu stesso usando un programma come hashcat.
Le migliori opzioni per le funzioni di hash sono le funzioni hash progettate per essere lente, ad esempio pbkdf2, scrypt e bcrypt. Fanno centinaia di migliaia di iterazioni per rallentare. Il numero di iterazioni può essere configurato per tenere conto di CPU più veloci.
Inoltre, le password non sono hash "nude". Di solito li salate; per esempio. aggiungere un valore salt casuale a loro; questo renderà la creazione di tabelle arcobaleno molto più difficile, poiché ora una tabella deve essere calcolata per ogni valore di sale separato.