原来java关于MD5加密
public static String MD5(String m) {
String s = m.toLowerCase();
try {
byte[] btInput = s.getBytes();
MessageDigest mdInst = MessageDigest.getInstance("MD5");
mdInst.update(btInput);
StringBuffer sb = new StringBuffer();
byte[] md = mdInst.digest();
for (int i = 0; i < md.length; i++) {
int val = ((int) md[i]) & 0xff;
if (val < 16) {
sb.append("0");
}
sb.append(Integer.toHexString(val));
}
return sb.toString();
} catch (Exception e) {
return null;
}
}
修改后java关于MD5加密
public static String MD5(String m) {
String s = m.toLowerCase();
s = URLEncoder.encode(s);
try {
byte[] btInput = s.getBytes();
MessageDigest mdInst = MessageDigest.getInstance("MD5");
mdInst.update(btInput);
StringBuffer sb = new StringBuffer();
byte[] md = mdInst.digest();
for (int i = 0; i < md.length; i++) {
int val = ((int) md[i]) & 0xff;
if (val < 16) {
sb.append("0");
}
sb.append(Integer.toHexString(val));
}
return sb.toString();
} catch (Exception e) {
return null;
}
}
关键代码是
s = URLEncoder.encode(s);
附上C#加密方法
public static string ComputeIdentifier(string sText)
{
HashAlgorithm Md5Hash = HashAlgorithm.Create("MD5");
byte[] buffer = Encoding.UTF8.GetBytes(sText.ToLower());
byte[] hash = Md5Hash.ComputeHash(buffer);
//return StringHelper.ToHexString(hash);
return StringHelper.ToHexString2(hash);
}