Wie können Sie generieren den gleichen MD5-Hashcode in Java und C#?

Ich habe eine Funktion, die erzeugt einen MD5-hash in C# so:

MD5 md5 = new MD5CryptoServiceProvider();
byte[] result = md5.ComputeHash(data);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < result.Length; i++)
{
    sb.Append(result[i].ToString("X2"));
}
return sb.ToString();

In java meine Funktion sieht wie folgt aus:

MessageDigest m = MessageDigest.getInstance("MD5");
m.update(bytes,0,bytes.length);

String hashcode = new BigInteger(1,m.digest()).toString(16);
return hashcode;

Während der C# - code generiert: "02945C9171FBFEF0296D22B0607D522D" die java-codes erzeugt: "5a700e63fa29a8eae77ebe0443d59239".

Gibt es einen Weg zu erzeugen, die dieselbe md5-hash für die gleichen bytearray?

On demand:

Dies ist der testcode in java:

File file = new File(System.getProperty("user.dir") + "/HashCodeTest.flv");
byte[] bytes = null;
try {
    bytes = FileUtils.getBytesFromFile(file);
} catch (IOException e) {
    fail();
}
try {
    generatedHashCode = HashCode.generate(bytes);
} catch (NoSuchAlgorithmException e) {
    fail();
}

und das ist mein code in C#

var blob = GetBlobByHttpPostedFile(httpPostedFile);
var hashCode = Md5Factory.ConvertByteArray(blob);

private static byte[] GetBlobByHttpPostedFile(HttpPostedFile httpPostedFile)
{
    var contentLength = httpPostedFile.ContentLength; 
    var result = new byte[contentLength];
    var inputStream = httpPostedFile.InputStream;
    inputStream.Read(result, 0, contentLength);

    return result;
}

Cheers

Du hast geschrieben test code aber kein test data. Nicht geladen werden aus einer Datei oder über HTTP -, nur hart-code einige Daten (keine Daten) in Ihrem test.
Insbesondere, habe ich nur bearbeitet meine Antwort mit Beispielen von dem, was ich bin auf der Suche nach - und die tun zeigen die gleichen hash-Werte, die mit der code-das ist im Prinzip die gleichen wie deine. Beachten Sie, dass in Ihrem C# - code, den Sie sind, ignorieren das Ergebnis Stream.Read, das ist nie eine gute Idee...

InformationsquelleAutor user29964 | 2010-05-27

Schreibe einen Kommentar