2013-04-08 40 views
7

Ho scritto una funzione che accetta l'URL di un file come parametro e restituisce l'hash MD5 di quel file.La funzione restituisce un diverso hash MD5 ogni volta

L'hash generato da questa funzione (nell'ambiente di sviluppo) corrisponde all'hash generato da uno strumento di terze parti per lo stesso file.

Tuttavia, quando questo è stato distribuito nell'ambiente di controllo qualità del mio cliente, questa funzione restituisce valori diversi ogni volta che viene chiamata la funzione.

Ho fatto un po 'di Google e ho scoperto che il problema potrebbe essere dovuto al dev. il server è a 64 bit e il server QA era a 32 bit. Dal momento che non ho accesso ai server del mio cliente, l'ho distribuito su un altro server a 32 bit e ho scoperto che gli hash corrispondono anche a un server a 32 bit (la funzione funziona come previsto?).

Ho anche dato un'occhiata a this question.

qui è la funzione che ho scritto:

public static String GetMD5HashFromFile(String url) 
{ 
    String response = String.Empty; 
    HttpWebRequest aRequest = (HttpWebRequest)WebRequest.Create(url); 
    using (HttpWebResponse aResponse = (HttpWebResponse)aRequest.GetResponse()) 
    { 
     MD5 md5 = new MD5CryptoServiceProvider(); 
     byte[] retVal = md5.ComputeHash(aResponse.GetResponseStream()); 
     response = "MD5:" + BitConverter.ToString(retVal).Replace("-", string.Empty); 
    } 
    return response; 
} 

Le mie domande sono; quale potrebbe essere il motivo per cui questa funzione restituisce vari valori? Il problema è nella mia funzione?

+3

Forse ha qualcosa a che fare con impostazioni locali diverse? Hai provato a sostituire 'aResponse.GetResponseStream()' con un valore fisso e vedere se il problema si verifica ancora? –

+1

La pagina su quell'URL cambia da una chiamata all'altra? – Oded

+0

@ErikSchierboom: No, non l'ho fatto. Lo proverei ora. Grazie –

risposta

1

Provare ad aggiungere la registrazione. Quindi, prima scarica il file nella stringa (scrivilo da qualche parte sul disco, per confrontarlo in un secondo momento). Quindi calcola l'hash sul disco. Ho avuto questo problema in uno dei miei progetti, e in quel caso i problemi erano con il server proxy che aggiungeva qualcosa alla risposta. Ma senza avere file su disco non puoi confrontarli.

Problemi correlati