본문으로 바로가기
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.






MessageDigest

Java에서 MD5, SHA를 이용한 알고리즘을 사용하려면 MessageDigest 클래스를 이용합니다.

MessageDigest 클래스에는 update() 메소드가 있는데, 이 메소드를 호출할때마다 객체 내에 저장된 digest 값이 계속해서 갱신이됩니다. 최종적으로 digest() 메서드를 호출하면 그 값을 가져올 수 있습니다.


  1. package com.javalec.security.seed;
  2.  
  3. import java.security.MessageDigest;
  4. import java.security.NoSuchAlgorithmException;
  5.  
  6. public class HashTest {
  7.     public static void main(String[] args) {
  8.         // TODO Auto-generated method stub
  9.         String str = "ktko";
  10.         String hashStr = createHash("ktko");
  11.         System.out.println("str : " + str + ", hashStr : " + hashStr);
  12.     }
  13.  
  14.     public static String createHash(String str) {
  15.         String hashString = "";
  16.         try {
  17.             // MD2, MD4, MD5, SHA-1, SHA-256, SHA-512
  18.             MessageDigest sh = MessageDigest.getInstance("SHA-512");
  19.             sh.update(str.getBytes());
  20.             byte byteData[] = sh.digest();
  21.             StringBuffer sb = new StringBuffer();
  22.             for (int i = 0; i < byteData.length; i++) {
  23.                 sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));
  24.             }
  25.             hashString = sb.toString();
  26.         } catch (NoSuchAlgorithmException e) {
  27.             e.printStackTrace();
  28.             hashString = null;
  29.         }
  30.         return hashString;
  31.     }
  32. }


MessageDigest 중요 소스 코드

  1.  MessageDigest sh = MessageDigest.getInstance("SHA-512");
  2.             sh.update(str.getBytes());
  3.             byte byteData[] = sh.digest();

 

API 설명

http://ith.kr/chair/javadoc/j2s131k/java/security/MessageDigest.html


MessageDigest.getInstance("Algorithm")에서 "Algorithm"에 MD5, SHA-256, SHA512를 대입할 경우 대입한 메시지 다이제스트 오브젝트를 작성합니다.

update()는 지정된 바이트 데이터를 사용해 다이제스트를 갱신합니다.

digesst()는 바이트배열로 해쉬를 반환합니다, 패딩 등의 최종 처리를 행해 해시 계산을 완료 합니다.


*참고

http://crazydeveloper.tistory.com/entry/%EC%95%94%ED%98%B8%ED%99%94%EB%A9%94%EC%8B%9C%EC%A7%80-%EB%8B%A4%EC%9D%B4%EC%A0%9C%EC%8A%A4%ED%8A%B8Message-Digest

http://javafactory.tistory.com/1284

// 0xff란 ? http://emflant.tistory.com/133


*유용한 사이트

http://www.fileformat.info/tool/hash.html

해시 알고리즘으로 변환된 스트링이 제대로 변환되었는지 확인할 수 있는 사이트이다.