2011-12-14 2 views
1

Я создал MD5 hash.Its работает отлично сейчас. Мне нужен вывод в 16 символах. Текущий код возвращает 32 символа.Генерировать MD5-хэш в Java -Output 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 шестнадцатеричных символах. Вы хотите, чтобы необработанные данные являлись строкой ASCII? – Ryan

ответ

5

Вырезать строку длины: digest1 = digest1.substring(0, 16);

MD5 выходы 16 байтов. Если вы кодируете его в шестнадцатеричном виде, его 32 символа. Если вы кодируете его в base-64, то это 24 символа. Base-85 сжимает его на 20 символов. Нет известной кодировки, которая составляет один символ на каждый байт.