我使用c#將字符串轉換爲MD5散列。然後我使用Java將字符串轉換爲MD5哈希。我注意到結果並不相同,即使是相同的輸入字符串。Java MD5散列不匹配C#散列
這是我的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)應該可以幫助你.. –