2011-12-14 7 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 문자로 압축합니다. 바이트 당 한 문자 인 잘 알려진 인코딩은 없습니다.