본문 바로가기

encryption

JAVA MessageDigest 클래스

SHA-256 암호화를 할 일이 생겨서 찾아보았다. JAVA POJO에서 기본적으로 나와있는 MessageDigest 클래스에서 지원을 한단다. MessageDigest는 MD5D와 SHA-1 그리고 SHA-256 등을 지원하는 듯하다. 사용법이 거의 같기 때문에 한가지만 보면 응용가능하다. 일딴 인터넷에 돌고 있는 셈플을 보자.

public static String getSHA256(String str){

String reCode = null;

try{

//MessageDigest 인스턴스 생성

MessageDigest sha = MessageDigest.getInstance("SHA-256");

//해쉬값 업데이트

sha.update(str.getBytes());

//해쉬값(다이제스트) 얻기

byte byteData[] = sha.digest();

StringBuffer sb = new StringBuffer();

//출력: 해쉬값을 16진수로 표현한 문자로 변환

for(byte byteTmp : byteData) {

sb.append(Integer.toString((byteTmp&0xff) + 0x100, 16).substring(1));

}

reCode = sb.toString();

}catch(Exception e){

logger.info(Sha256Cipher.class.getName() + " getSHA256 Error : " + e);

}

return reCode;

}


대체적으로 이런 소스가 돌고 있다. 여기서 좀더 간단한 표현을 찾았다.

public static String getEncryptSHA256(String str){

String reCode = null;

try{

//MessageDigest 인스턴스 생성

MessageDigest sha = MessageDigest.getInstance("SHA-256");

            

//출력: 해쉬값업데이트 후에 16진수 문자로 변환 

sha.update(str.getBytes(), 0, str.length());

reCode = new BigInteger(1, sha.digest()).toString(16);

}catch(Exception e){

logger.info(Sha256Cipher.class.getName() + " getEncryptSHA256 Error : " + e);

}

return reCode;

}



참고 자료

http://javaking75.blog.me/140212037961

http://docs.oracle.com/javase/8/docs/api/java/security/MessageDigest.html

http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#MessageDigest

'encryption' 카테고리의 다른 글

RSA + spring + ehcache + freemarker  (0) 2012.07.20