I am trying to generate C# MD5CryptoServiceProvider
to encode string and Java MessageDigest.getInstance("MD5")
to encode string, but both outputs are different. There are so many sample are already available on stackoverlflow
but still stuck on some where.
Following is my C# code:
MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
Byte[] hashedDataBytes = null;
UTF8Encoding encoder = new UTF8Encoding();
hashedDataBytes = md5Hasher.ComputeHash(encoder.GetBytes("NSI#1234@"));
string strPassword = string.Empty;
foreach (byte b in hashedDataBytes)
{
strPassword = strPassword + b.ToString();
}
return strPassword;
The C#
code is freeze code, i have not permission to change this code.
Following is my Java code:
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
byte[] digest = messageDigest.digest("NSI#1234@".getBytes("UTF-8"));
String hash = new BigInteger(1, digest).toString();
System.out.println(hash);
C# code output: 158163028351382321031971922721528189209213
Java Code output: 210864369951346339831795420458152481237
C# generate 42 number and java generate 39 number. if i change the value of new BigInteger(1, digest).toString(8)
it generates 43 number and if i change new BigInteger(1, digest).toString(9)
it generates 41 number.