Я преобразовываю строки в хеши MD5 с помощью C#. Затем я преобразовываю строки в хеши MD5 с помощью Java. Я заметил, что результаты не совпадают, даже для одних и тех же входных строк.Java MD5 Hash не соответствует C# Hash
Вот мой Java код:
public String encrypt(String message)
{
String digest = null;
try
{
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] hash = md.digest(message.getBytes("UTF-8"));
StringBuilder sb = new StringBuilder(2*hash.length);
for(byte b : hash)
{
sb.append(String.format("%02x", b&0xff));
}
digest = sb.toString();
}
catch (Exception e)
{
//Toast.makeText(context, e.toString(), Toast.LENGTH_LONG).show();
}
return digest;
}
}
Вот мой C# Код:
public static string Encrypt(string input)
{
Byte[] inputBytes = Encoding.UTF8.GetBytes(input);
Byte[] hashedBytes = new MD5CryptoServiceProvider().ComputeHash(inputBytes);
return BitConverter.ToString(hashedBytes);
}
У меня есть более легкий доступ к коду Java. Можно ли каким-либо образом изменить код Java, чтобы результирующие хэши были такими же, как хэши C#?
Заранее спасибо.
Я проверил бы фактические байты, выводимые обоими декодерами. Удостоверьтесь, что у вас нет спецификации ... вещи становятся странными, когда они участвуют. : P – cHao
[This] (http://stackoverflow.com/questions/2920044/how-can-you-generate-the-same-md5-hashcode-in-c-sharp-and-java) должен помочь вам .. –