C#与java对字符串进行加密,往往会出现结果不一致的情况,经过搜集,下面的两个方法是对的,并且结果一致。
C#
private
string getMd5Str(
string source){
string result = "";
MD5 m = new MD5CryptoServiceProvider();
byte[] s = m.ComputeHash( UnicodeEncoding.UTF8.GetBytes( source ) );
result= BitConverter.ToString( s ).Replace( " - " , "" );
m.Clear();
string result = "";
MD5 m = new MD5CryptoServiceProvider();
byte[] s = m.ComputeHash( UnicodeEncoding.UTF8.GetBytes( source ) );
result= BitConverter.ToString( s ).Replace( " - " , "" );
m.Clear();
return result;
}
java
public
static String getMD5Str(String str)
{
MessageDigest messageDigest= null;
try
{
messageDigest=MessageDigest.getInstance("MD5");
messageDigest.reset();
messageDigest.update(str.getBytes("UTF-8"));
}
catch(NoSuchAlgorithmException e)
{
System.out.println("NoSuchAlgorithmException caught!");
System.exit(-1);
}
catch(UnsupportedEncodingException e)
{
e.printStackTrace();
}
byte[] byteArray=messageDigest.digest();
StringBuffer md5StrBuff= new StringBuffer();
for( int i=0;i<byteArray.length;i++)
{
if(Integer.toHexString(0xFF&byteArray[i]).length()==1)
md5StrBuff.append("0").append(Integer.toHexString(0xFF&byteArray[i]));
else
md5StrBuff.append(Integer.toHexString(0xFF&byteArray[i]));
}
return md5StrBuff.toString();
}
{
MessageDigest messageDigest= null;
try
{
messageDigest=MessageDigest.getInstance("MD5");
messageDigest.reset();
messageDigest.update(str.getBytes("UTF-8"));
}
catch(NoSuchAlgorithmException e)
{
System.out.println("NoSuchAlgorithmException caught!");
System.exit(-1);
}
catch(UnsupportedEncodingException e)
{
e.printStackTrace();
}
byte[] byteArray=messageDigest.digest();
StringBuffer md5StrBuff= new StringBuffer();
for( int i=0;i<byteArray.length;i++)
{
if(Integer.toHexString(0xFF&byteArray[i]).length()==1)
md5StrBuff.append("0").append(Integer.toHexString(0xFF&byteArray[i]));
else
md5StrBuff.append(Integer.toHexString(0xFF&byteArray[i]));
}
return md5StrBuff.toString();
}