【发布时间】:2013-03-18 19:51:45
【问题描述】:
我编写了一个简单的函数来将字符串转换为 md5,我在输出中看到奇怪的字母。我假设某些字符编码搞砸了。我可以指出我做错了什么吗?
public class App
{
public static void main(String[] args){
String str = "helloWorldhelloWorldhelloWolrd";
getHash(str);
}
public static void getHash(String str){
try {
byte[] three = str.getBytes("UTF-8");
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] thedigest = md.digest(three);
String str1 = new String(thedigest,"UTF-8");
System.err.println(str1);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
输出: 这是我看到的
n?)?????fC?7
【问题讨论】:
-
FWIW,如果您可以使用第三方库,Guava 可以在
Hashing.md5().hashString(string, Charsets.UTF_8).toString()的单行代码中为您提供十六进制编码的 MD5 哈希。
标签: java encryption md5