본문 바로가기

Language/Java / JSP

[Java] SHA256, MD5 암호화 하기

반응형

특정 텍스트를 암호화 하여 DB에 보관해야 할 일들이 있다.
특히 패스워드 같은것은 입력받은 문자 그대로 저장하는것보다 암호화 하여 저장하는것이 보안을 더 높일수 있다.


1. SHA256 암호화

/**
 * 문자열을 SHA-256 방식으로 암호화
 * @param txt 암호화 하려하는 문자열
 * @return String
 * @throws Exception
 */
public String getEncSHA256(String txt) throws Exception{
	StringBuffer sbuf = new StringBuffer();
	
	MessageDigest mDigest = MessageDigest.getInstance("SHA-256");
	mDigest.update(txt.getBytes());
	
	byte[] msgStr = mDigest.digest() ;
	
	for(int i=0; i < msgStr.length; i++){
		byte tmpStrByte = msgStr[i];
		String tmpEncTxt = Integer.toString((tmpStrByte & 0xff) + 0x100, 16).substring(1);
		
		sbuf.append(tmpEncTxt) ;
	}
	
	return sbuf.toString();
}



2. MD5 암호화

/**
 * 문자열을 MD-5 방식으로 암호화
 * @param txt 암호화 하려하는 문자열
 * @return String
 * @throws Exception
 */
public String getEncMD5(String txt) throws Exception {
	
	StringBuffer sbuf = new StringBuffer();
	
	
	MessageDigest mDigest = MessageDigest.getInstance("MD5");
	mDigest.update(txt.getBytes());
	
	byte[] msgStr = mDigest.digest() ;
	
	for(int i=0; i < msgStr.length; i++){
		String tmpEncTxt = Integer.toHexString((int)msgStr[i] & 0x00ff) ;			
		sbuf.append(tmpEncTxt) ;
	}
	
	
	
	return sbuf.toString() ;
}




아울러 네이버 개발자 블로그에 "안전한 패스워드 저장" 이라는 글이 있으니, 한번 읽어보는것도 좋음.