Napisałem funkcję, która pobiera adres URL pliku jako parametr i zwraca skrót MD5 tego pliku.Funkcja zwraca różne wartości mieszania MD5 za każdym razem
Hash wygenerowany przez tę funkcję (w środowisku programistycznym) jest zgodny z hashem wygenerowanym przez narzędzie innej firmy dla tego samego pliku.
Ale kiedy zostało to wdrożone w środowisku QA mojego klienta, ta funkcja zwraca różne wartości za każdym razem, gdy funkcja jest wywoływana.
Zrobiłem trochę Googleing i okazało się, że problem może być spowodowany tym, że programista. serwer jest 64-bitowy, a serwer QA ma 32-bitową. Ponieważ nie mam dostępu do serwerów mojego klienta, wdrożyłem go na innym serwerze 32-bitowym i stwierdziłem, że skróty pasują nawet do serwera 32-bitowego (funkcja działa zgodnie z oczekiwaniami?).
Spojrzałem również na this question.
tutaj jest funkcja I napisał:
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;
}
Moje pytania są; jaki może być powód, dla którego funkcja zwraca różne wartości? Czy problem dotyczy mojej funkcji?
Być może ma to coś wspólnego z różnymi lokalizacjami? Czy próbowałeś zastąpić 'aResponse.GetResponseStream()' stałą wartością i sprawdzić, czy problem nadal występuje? –
Czy strona pod tym adresem URL zmienia się między połączeniami? – Oded
@ErikSchierboom: Nie, nie zrobiłem tego. Teraz spróbuję. Dziękuję –