Il fattore di lavoro si applica solo ad alcuni algoritmi di hashing, quindi è ancora necessario trovare un modo affidabile per identificare l'hash e la maggior parte degli hash sono praticamente indistinguibili in termini di output, oltre alla lunghezza impostata:
539080ba278cf4cf4db2e4a32642ff30
8d777f385d3dfec8815d20f7496026dc
042636dba1586150f13670473360ca06
2eb9b7b30492034d392888f72ace81a1
sono tutti gli hash di 32 caratteri dello stesso input. L'unico modo per dire quale è provare a eseguirli tutti con funzioni che producono output a 32 caratteri (128 bit, in rappresentazione Base-64).
Poiché il fattore lavoro deve essere noto affinché l'utente legittimo possa ricreare l'hash, deve essere memorizzato in qualche modo. Ad esempio, gli hash di bcrypt hanno il costo incluso come secondo parametro:
$2a$04$BsM7V0W/.V5z.p//XMUJeu.C537J/XoMYYKuCV8vDBq65KgKiDH4.
$2a$12$noxpk3amerDxXofuz4ViS.nOsnK4TWqXnmlfj6Y8b71ERVeZ7Bj5G
In questi (che hash ha la stessa stringa di prima), il costo per il primo esempio è 4 (2 ^ 4 round di espansione della chiave), e per il secondo è 12 (2 ^ 12 round di espansione della chiave).
Per altri algoritmi, di solito fa parte di "rappresentazioni comuni", altrimenti deve essere memorizzato nel codice, che tende ad essere più difficile da aggiornare se i progressi nel calcolo dell'hash dovessero essere utilizzati fattori di lavoro più elevati. Se hai solo l'hash raw, senza le altre parti, l'unico modo è quello di forzare la tua forza attraverso possibili fattori di lavoro ...