Lineda Chouaki
Lineda Chouaki

Reputation: 11

Encoding with C# and Java

I have got to make the same function in Java and C#, but the result are not the same.

My code in C# :

    string xmlString = System.IO.File.ReadAllText(@"crc.xml");

    byte[] bytes = Encoding.ASCII.GetBytes(xmlString);

    // step 1, calculate MD5 hash from input
    MD5 md5 = System.Security.Cryptography.MD5.Create();
           
    byte[] hash = md5.ComputeHash(bytes);

    // step 2, convert byte array to hex string
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < hash.Length; i++)
    {
         sb.Append(hash[i].ToString("X2"));
    }
    Console.WriteLine(sb.ToString());

And my code in Java :

    string xmlstring = Files.readString(Paths.get("crc.xml"));
    MessageDigest m = MessageDigest.getInstance("MD5");
    byte[] digest = m.digest(xmlstring.getbytes());
    String hash = new BigInteger(1, digest).toString(16);
    System.out.println(hash);

In C# I have this result :

F5F8B2F361FEA6EA30F24BEBAA5BDE3A

But in Java I have this result :

8fb40aad49fbf796b82a2faa11cda764

What I'm doing wrong?

Upvotes: 0

Views: 133

Answers (1)

S&#233;bastian
S&#233;bastian

Reputation: 21

Codebrane say it. Use

byte[] bytes = Encoding.UFT8.GetBytes(xmlString);

instead of

byte[] bytes = Encoding.ASCII.GetBytes(xmlString);

Upvotes: 1

Related Questions