2011-12-14 16 views
1

MD5ハッシュを作成しました。現在は正常に動作しています.16文字で出力したいです。現在のコードは32文字を返します。JavaでMD5ハッシュを生成する - 出力16文字

これは私のコードです:

私はそれを変更したい
try { 
      String text = "Hello World"; 
      MessageDigest msg = MessageDigest.getInstance("MD5"); 
      msg.update(text.getBytes(), 0, text.length()); 
      String digest1 = new BigInteger(1, msg.digest()).toString(16); 
      System.out.println("MD5: " + digest1.length()); 
      System.out.println("MD5: " + digest1); 
     } catch (NoSuchAlgorithmException ex) { 
      Logger.getLogger(AndroidActivationView.class.getName()).log(Level.SEVERE, null, ex); 
     } 

どのようにして16文字の出力を得ることができますか?

ありがとうございます。

+3

まあ... MD5は、128ビットのハッシュ、つまり16バイトです。 32桁の16進数で表すことができます。生データをASCII文字列として使用しますか? – Ryan

答えて

5

カット長さの文字列:digest1 = digest1.substring(0, 16);

MD5出力16バイト。 16進数で32文字をエンコードした場合。あなたがベース64でそれをエンコードするなら、それは24文字です。 Base-85はそれを20文字に絞り込みます。 1バイトあたり1文字の周知のエンコーディングはありません。

関連する問題