1 min to read
MD5 w Java i C#

Nacięliśmy się ostatnio na hash’owanie w MD5.
Bywa, ja miałem swoje hashe, kolega z javy miał swoje. Dla grupy testowej hash’e były identyczne. Okazało się, że grupa testowa hash’y była niewystarczająca.
Hash’e wygenerowane w C# miały na początku zera, a w javie zera były ucinane.
Z czystej ciekawości - zainstalowałem eclipse i udało mi się uruchomić kawałek kodu w javie który działa odrobinę lepiej - dzięki pętli while która czuwa nad długością naszego hash’a
Java:
private static String javaMD5(String text)
{
byte[] bytes = text.getBytes();
MessageDigest m = null;
try
{
m = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException var5)
{
var5.printStackTrace();
}
byte[] digest = m.digest(bytes);
String hash = (new BigInteger(1, digest)).toString(16);
while(hash.length() < 32 )
{
hash = "0"+hash;
}
return hash;
}
oraz C#:
private static string CsharpToMd5(string text)
{
var bytes = new MD5CryptoServiceProvider()
.ComputeHash(Encoding.UTF8.GetBytes(text));
var stringBuilder = new StringBuilder();
foreach (var @byte in bytes)
{
stringBuilder.Append(@byte.ToString("x2"));
}
return stringBuilder.ToString();
}
Przykładowe słowo do zahashowania to “ test” jego hash to: “ 098f6bcd4621d373cade4e832627b4f6”.
Comments