Java和C# MD5(转)
上网参考了很多实例和范文,终于解决了多个字符MD5结果Java与C#一致了,直接上代码~
Java代码
public static String md5One(String s){ MessageDigest md = null; try { md = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e.getMessage()); } md.update(s.getBytes()); return ByteUtil.byteArrayToHexString(md.digest()); } public static String md5Three(String clientId,String pwd,String timestamp){ clientId=clientId==null?"":clientId; pwd=pwd==null?"":pwd; timestamp=timestamp==null?"":timestamp; while(timestamp.length()<10){ timestamp="0"+timestamp; } MessageDigest md = null; try { md = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e.getMessage()); } md.update(clientId.getBytes()); md.update(new byte[7]); md.update(pwd.getBytes()); md.update(timestamp.getBytes()); return ByteUtil.byteArrayToHexString(md.digest()); }
C#代码
public static string md5One(string s) { MD5 md = new MD5CryptoServiceProvider(); byte[] ss = md.ComputeHash(UnicodeEncoding.UTF8.GetBytes(s)); return ByteUtil.byteArrayToHexString(ss); } public static string md5Three(String clientId, String pwd, String timestamp) { clientId = clientId == null ? "" : clientId; pwd = pwd == null ? "" : pwd; timestamp = timestamp == null ? "" : timestamp; while (timestamp.Length < 10) { timestamp = "0" + timestamp; } MD5 md = new MD5CryptoServiceProvider(); string s7 = UnicodeEncoding.UTF8.GetString(new byte[7]); s7 = string.Concat(clientId, s7, pwd, timestamp); byte[] result = md.ComputeHash(UnicodeEncoding.UTF8.GetBytes(s7)); return ByteUtil.byteArrayToHexString(result); }
单个字符
string aa = SMGP.util.myMD5.md5One("159753");
//java 5583413443164b56500def9a533c7c70
//C# 5583413443164b56500def9a533c7c70
多个字符
string tt = SMGP.util.myMD5.md5Three("123", "456", "159753");
//java 68ad26b4a406add27a6c659e6f7df508
//C# 68ad26b4a406add27a6c659e6f7df508
通用部分
private static string[] HexCode ={ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" }; public static string byteToHexString(byte b) { int n = b; if (n < 0) { n = 256 + n; } int d1 = n / 16; int d2 = n % 16; return HexCode[d1] + HexCode[d2]; } public static String byteArrayToHexString(byte[] b) { String result = ""; for (int i = 0; i < b.Length; i++) { result = result + byteToHexString(b[i]); } return result; }
出处:http://blog.csdn.net/evangel_z/article/details/8524887

浙公网安备 33010602011771号