我试图将字符串转换为它的MD5
表示与此代码:转换字符串的MD5给人增添位数
public static void main(String[] args) throws NoSuchAlgorithmException {
String s = "oshai";
MessageDigest m = MessageDigest.getInstance("MD5");
m.update(s.getBytes(),0,s.length());
String md5 = new BigInteger(1,m.digest()).toString(16);
System.out.println(md5.length());
}
返回的字符串添加的数字(31号,所以它可以是一个十六进制数)。我究竟做错了什么?
注:它可能是31个数字,因为它不填充。如果散列是一个小数字,它不会有前导零。下面的答案都正确填充十六进制数字。 – slipperyseal
如果第三方库是公平游戏,那么使用[Guava](https://code.google.com/p/guava-libraries/)就会更简单(也更正确):'Hashing.md5()。hashString (s,Charsets.UTF_8).toString()'返回UTF-8编码字符串正确的十六进制编码的MD5散列。 –
谢谢,我总是喜欢别人写代码,番石榴是我的最爱之一:-) – oshai