Spring

Spring(스프링) 비밀번호 암호화 (SHA-256 알고리즘)

개발윗미 2021. 10. 17. 12:17

스프링 프로젝트에서 데이터베이스에 저장되어 있는 비밀번호는 사용자의 개인정보이기 때문에 암호화하는 것이 바람직하다.

 

그러므로, 스프링 프로젝트에서 비밀번호를 암호화하는 방법은 아래와 같다.

 

1. 프로젝트 - util 디렉토리 생성 - SHA_256.java 파일 생성

<SHA_256.java>

package projectname.common.util;

import org.springframework.stereotype.Component;
import java.nio.charset.Charset;
import java.security.MessageDigest;


@Component("SHA_256")
public class SHA_256 {

	public String encrypt(String planText) {
    	try {
        	MessageDigest md = MessageDigest.getInstance("SHA-256");
            md.update(planText.getBytes(Charset.forName("UTF-8")));
            byte byteData[] = md.digest();

            StringBuffer sb = new StringBuffer();
            for (int i=0; i<byteData.length; i++) {
                sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));
            }

            StringBuffer hexString = new StringBuffer();
            for (int i=0; i<byteData.length; i++) {
                String hex = Integer.toHexString(0xff & byteData[i]);
                if (hex.length() == 1) {
                    hexString.append('0');
                }
                hexString.append(hex);
            }
            return hexString.toString();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException();
        }
    }
}

 

2. MemberServiceImpl.java (서비스 구현 부분)

<MemberServiceImpl.java>

import projectname.common.util.SHA_256; // 암호화 클래스 사용하기 위함


// 서비스 구현 블록 안에 아래의 코드를 작성하여 암호화되어 출력되는지 확인
System.out.println(sha_256.encrypt((String)map.get("pw")));

// pw는 데이터베이스에서 조회한 사용자의 비밀번호