<< 학습 목표 >>

1. 사용자들의 개인정보를 암호화해야하는 이유를 설명할 수 있다.

2. 데이터를 암호화할 수 있다.


CRUD 프로젝트를 통해서 사용자들은 우리 서비스에 가입을 할 수 있음

가입을 할 때 사용자들의 민감한 개인정보를 함께 입력함

사용자들은 우리를 믿고 가입을 할 때 민감한 개인 정보를 입력했고 우리는 이를 DB에 보관하고 있음

만약 해커가 우리 DB를 해킹해 사용자들의 민감한 개인 정보를 훔쳐간다면?

 

 

한국맥도날드, 488만 고객 개인정보 유출…과징금 7억 제재

【서울=뉴시스】송혜리 기자 = 487만6106명의 고객 개인정보가 유출된 한국맥도날드가 개인정보보호위원회로부터 7억원 상당의 과징금 제재를 받았다

www.newsis.com

 

가장 중요한건 해커가 DB를 해킹하지 못하게 막는게 중요함

그러나 세상에 모든 것을 막을 수 있는 방패는 없듯 아무리 보안에 신경을 쓴다고 해도 해킹을 하는 해커들이 있음

그래서 2차적으로 사용자들의 민감한 개인 정보를 암호화해 저장함

암호화해 저장해두면 해커가 개인 정보를 훔쳐가더라도 이게 무슨 데이터인지 알 수 없기 때문에...

 

밑으로 내려 가기 전 암호화와 관련된 부분들을 보고 오자

 

AES & SHA-256 암호화란 ? (개념 / 종류 / 특징)

서론 이번글에서는 AES란 암호화에 대해 정리해볼려 한다. 우선 프로그래밍에 앞서 사용자의 개인 정보에 대해서 암호화는 필수라고 생각한다. 필자는 이번에 대표적인 AES의 암 복호화에 대한

jeongkyun-it.tistory.com

 

 

 

자바 암호화와 복호화

자바에서 암호화와 복호화는 어떻게 구현할까? 암호화에 사용되는 알고리즘, 운용 방식, 패딩이란 무엇일까?

madplay.github.io

 

 

자바 비밀번호 암호화 (SHA256,SHA512) + Salt

SHA (Secure Hash Algorithm, 안전한 해시 알고리즘)은 해시 함수들의 모음이라고 보면 되요. 복호화가 불가능한 단방향 암호화 기법으로 데이터를 안전하게 저장할 수 있습니다. SHA256과 SHA512도 그 중

gofnrk.tistory.com


우리는 간단한 프로젝트라 민감한 개인정보는 없지만 일반적으로 비밀번호는 암호화해 저장해둠

우리도 비밀번호를 암호화해 저장해두자

 

util 패키지 -> CryptoUtil 클래스를 선언하고 아래 코드를 추가하자

package utility;

import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class CryptoUtil {
	public String onewayEncryption(String str) {
		String encodedStr = null;
		
		try {
			MessageDigest md = MessageDigest.getInstance("SHA-512");
			md.update(str.getBytes(StandardCharsets.UTF_8));
			encodedStr = String.format("%128x", new BigInteger(1, md.digest()));
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		
		return encodedStr;
	}
}

 

회원 가입을 할 때 비밀번호를 암호화해 저장하자

파라미터 검증이 끝난 후와 회원 가입을 하기 전 사이에서 암호화를 해야함

 

이제 비밀번호가 암호화 되서 회원 가입이 이뤄질 것

여기서 회원 가입을 해보기 전에 DB에 비밀번호 칼럼의 길이를 늘려야함

우리가 암호화에 사용한 SHA-512 알고리즘은 암호화된 문자열의 길이가 128이기 때문에...

이제 비밀번호를 모두 같은 128자로 암호화 하기 때문에 위와 같이 pw 칼럼의 데이터 유형을 CHAR로 바꾸고 길이를 128로 바꾸자

 

이제 서버를 시작하고 회원 가입을 한 후 DB를 확인해보자


회원 가입할 때 비밀번호를 암호화해서 저장했으므로 로그인할 때도 비밀번호를 암호화해야함

 

로그인 역시 파라미터 검증을 한 후와 로그인 하기 전 사이에 비밀번호를 암호화 하도록 바꾸자

 

서버를 재시작 하고 로그인이 정상적으로 이뤄지는지 확인해보자

 

비밀번호를 암호화 했기 때문에 비밀번호를 암호화 하기 전 계정은 이제 접속할 수 없음

 

728x90
LIST