Determina i metodi di codifica / hashing utilizzati basandosi sulla conoscenza solo dell'input e dell'output?

4

Se conosco il valore iniziale di una stringa e l'hash risultante ma non ho accesso al sistema che produce l'output, come posso determinare cosa è effettivamente accaduto in modo da poter riprodurre l'algoritmo di hash?

Per fare un esempio, diciamo che ho una lista come questa:

Nathan    b01f1c8a5cc02855a2fc19ffc0da421b
password  0b8b946432f1ac91f0b07bd5f8df6587
string    c741dd70bca16058ca3f62b2ee926ec6

So che i passaggi che ho seguito per ottenere questo erano MD5(Base64("string")) , ma c'è un modo per determinare quello basato sui soli dati sopra riportati? Oltre a provare solo alcune sequenze di hashing / codifica comuni sulle stringhe originali e sperare di incappare in un risultato corrispondente? Se ho molte stringhe di input e hash di output, questo può aiutare in qualche modo per l'analisi?

    
posta Nathan 01.11.2012 - 06:02
fonte

2 risposte

7

Is there any way to determine that based on the above data alone aside from just trying a bunch of common hashing/encoding sequences on the original strings and hoping to stumble across a matching output?

No, non c'è altro modo. A volte ci viene suggerito di conoscere la lunghezza delle cose (gli hash MD5 sono più brevi di SHA-256, ecc.), Ma questo non ti promette nulla.

    
risposta data 01.11.2012 - 06:40
fonte
2

Nathan - nessun attrezzo ti aiuterà qui. Se sapessi che proviene da un breve insieme di algoritmi fissi in cui potresti avere una possibilità, ma l'hashing solitamente usa i sali, il che lo rende impossibile.

La combinazione di un buon algoritmo di hashing più un salt indica che potresti avere un output per un dato input (esclusa la differenza di lunghezza occasionale)

    
risposta data 01.11.2012 - 08:47
fonte

Leggi altre domande sui tag