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();
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(); }