Sto eseguendo del codice che ho scritto in C che chiama la funzionalità di hashing md5 da una libreria di hashing che qualcun altro ha scritto (md5.c & md5.h). Il comportamento strano che ho visto è:L'hash MD5 calcola in modo diverso sul server
hashing perfettamente funzionante = Ho cancellato una stringa, e viene fuori l'hash esatto che ho verificato che sia con più altre fonti.
hash funzionalità funziona perfettamente quando compilare ed eseguire sulla mia macchina OSX e l'hash che viene calcolata è esattamente come dovrebbe essere .
Stesso codice, nessuna modifica viene caricato e compilati sulla base di Linux server e si calcola un diverso (sbagliato) di hash.
Qualcuno ha qualche idea su come esattamente questo sarebbe possibile? Ha fatto impazzire la scorsa settimana e non capisco perché sia possibile. L'ho anche testato su un'altra macchina, compilato ed eseguito e funziona perfettamente. E 'proprio quando lo carico sul server che l'hash non è più corretto.
Il file funzionalità di hashing sono disponibili all'indirizzo: http://people.csail.mit.edu/rivest/Md5.c
RISOLTO: Grazie a tutti E 'stato il problema di arco a 64 bit. La sua potente fastidioso che quel passato di mente di considerare che durante il debug .......
Per chiarire, si intende che il codice compilato che deve effettuare una chiamata di libreria alla funzione di hashing MD5 restituisce il risultato errato? In tal caso, hai verificato che lo stesso _input_ venga fornito sia sul server che localmente? Puoi eseguire il debug-print appena prima di inviarlo per essere sicuro? –
Sì, il codice compilato che non cambio, semplicemente il caricamento sul server mi dà un risultato diverso per l'hash. Ho persino inserito una variabile statica che non cambia mai e che verifica l'input subito prima della chiamata alla funzione e mi dà due diversi hash. È molto strano. –
Per favore chiarisci - tu carichi il file binario o carica la fonte e compili? – sharptooth