ccache è uno strumento popolare per velocizzare la ricompilazione con GCC e altri compilatori. Funziona memorizzando nella cache le compilation precedenti e rilevando quando viene eseguita di nuovo la stessa compilation. Il rilevamento viene eseguito utilizzando gli hash MD4.
Sono curioso di sapere (a) perché un tale strumento di caching userebbe qualsiasi funzione di hash crittografica e (b) di tutte le funzioni di hash crittografiche disponibili, perché sarebbe usato MD4 in particolare.
Per quanto riguarda (a), qual è il vantaggio dell'utilizzo di una funzione di hash crittografica, al contrario di alcune funzioni di hash non progettate pensando alla crittografia? Ad esempio, funzioni di hash incorporate di Java non sembrano corrispondere a quelli noti usati (o precedentemente usati) in crittografia. Perché non utilizzare una di queste funzioni hash non crittografiche? Date le note debolezze di MD4, non posso immaginare che sarebbe stato scelto per desiderio di maggiore sicurezza.
Riguardo a (b), supponendo che ci sia una base per l'uso di un hash crittografico, perché MD4 in particolare? Capisco che non avrebbe senso usare una moderna funzione di hash crittografica, dal momento che questi sono generalmente intensivi dal punto di vista computazionale, che sconfigge lo scopo di velocizzare i tempi di accesso di uno strumento di memorizzazione nella cache. Quindi MD4 deve essere usato almeno in parte per la velocità. Ma è assolutamente la funzione hash crittografica più veloce , o ce ne sono altre più veloci? Se non è il più veloce, quali altri vantaggi avrebbe MD4 (oltre, per esempio, MD5) per l'uso nella cache?