Secondo questo argomento non sei il primo a cercare per quell'algoritmo. Come già accennato, Progress è non disposto a condividere molto su questo algoritmo.
Sebbene sia molto probabile che si crei un crack dell'algoritmo, è generalmente più semplice usare Progress stesso per calcolare gli hash. L'altra opzione è quella di passare dall'utilizzo della funzione Progress a varianti più standard (come SHA-1).
Ora, maggiori chiarimenti su cosa potrebbe significare "variazione". Supponi qualcosa del tipo:
string Encode(string pass) {
string salt = "123456";
return CRC16(pass + salt); // + for catenation
}
mentre è ancora lo stesso CRC16 produrrà risultati completamente diversi (rispetto a CRC16(pass)
). Quindi l'unico modo per ottenere un vero algoritmo è usare il disassemblatore per vedere il codice reale, dal momento che è probabilmente impossibile fare qualcosa osservando solo input e output.
Non esiste un "approccio strutturale" per indovinare l'algoritmo da input e result a meno che tu non abbia un pattern, e questo è esattamente che hash ideale non deve avere.