JavaでMessageDigestを使用してMD5ハッシュコードを生成しようとしています。以下のサンプルコードを見つけてください。私が試している文字列は、いくつかのコード(KO00001)とシステム日付と組み合わされています。
String s = "KO00001"+"25/10/2012";
byte[] buffer = s.getBytes();
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(buffer);
String str = new BigInteger(1,md5.digest()).toString(16).toUpperCase();
System.out.println(str+" length:"+str.length());
KO0000126 / 10/2012、KO0000126/10/2012のようなすべての文字列の長さを32にしています。ただし、文字列「KO0000125 / 10/2012」の場合、結果の長さは31になります。
理由は何でしょうか?