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 |
---|