关于网友提出的“ java如何实现c#的MD5算法”问题疑问,本网通过在网上对“ java如何实现c#的MD5算法”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: java如何实现c#的MD5算法描述:
C#的算法应该是微软实现的,不能看到源码,就是一句话
public static string md5(string str)
{
string md5str = FormsAuthentication.HashPasswordForStoringInConfigFile(str.Trim().Replace("'", ""), "MD5");
return md5str;
}
请问使用java如何实现。
之前用java实现的结果:
69AAC51ED3FA8D84E9D6B9A37A4A523(使用了大写)
但是c#实现的结果:
69AAC51ED3FA08D84E9D6B9A37A4A523
就是差一个0呀,害得我访问接口老是说参数错,求各位大神能解答!
解决方案1:
字符编码问题
public static void main(String[] args) throws Exception {
System.out.println(getMD5("a", "utf-8"));
}
public static String getMD5(String str, String encoding) throws Exception {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(str.getBytes(encoding));
byte[] result = md.digest();
StringBuffer sb = new StringBuffer(32);
for (int i = 0; i < result.length; i++) {
int val = result[i] & 0xff;
if (val < 0xf) {
sb.append("0");
}
sb.append(Integer.toHexString(val));
}
return sb.toString().toUpperCase();
}