我試圖將字符串轉換爲它的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