Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

요리사에서 IT개발자로

스파르타 부트캠프 Spring Master 3강 패스워드 암호화 이해하기 본문

Spring

스파르타 부트캠프 Spring Master 3강 패스워드 암호화 이해하기

H.S-Backend 2024. 5. 25. 15:05

회원 가입 시 사용자가 입력한 비밀번호는 

정보통신망법, 개인정보보호법에 의해서

 

비밀번호 암호화(Encryption)가 의무

출처: KISA 개인정보 종류와 적용 가능 암호기술

 

아이디와 비밀번호를 입력한 문자열 그대로 저장되어 DB에 저장된다면

유출의 위험이 굉장히 높으며 

해커뿐만 아니라

DB조회가 가능한 내부 관계자들도 회원가입정보를 기억할 수 있다.

 

그래서 암호화 후 패스워드 저장이 필요하다.
평문 -> 암호화 알고리즘 -> 암호문


위처럼 해커가 DB에 저장되있는 회원이 입력한 패스워드 정보를 갈취하더라도 

실제 암호를 알 수 없고 내부관계자들도 알수 없다.

그래서 복호화가 불가능한 '단방향' 암호 알고리즘 사용필요하다.

 


양방향 암호 알고리즘

암호화 

평문 -> 암호화 알고리즘 -> 암호문

복호화

암호문 -> 암호화 알고리즘 -> 평문


단방향 암호 알고리즘

암호화

평문 -> 암호화 알고리즘 -> 암호문

복호화는 불가능하다.


사용자가 회원가입이 아닌

로그인할 시 암호화된 Password확인 하는절차

 

사용자가 회원정보를 입력하고 서버에 로그인을 요청하면

서버에서 패스워드를 암호화하고

평문 -> 암호화 알고리즘 -> 암호문

DB에 저장된 아이디와 패스워드(암호문) 이 일치 여부를 확인한다.

 


Password Matching

Spring Security 라는 프레임워크에서 제공하는 

비밀번호 암호화 기능 코드

// 사용예시
// 비밀번호 확인
if(!passwordEncoder.matches("사용자가 입력한 비밀번호", "저장된 비밀번호")) {
        throw new IllegalAccessError("비밀번호가 일치하지 않습니다.");
 }

boolean matches(ChrSequence rawPassword, String encodedPassword);

rawPassword : 사용자가 입력한 비밀번호

encodedPassword : 암호화되어 DB에 저장된 비밀번호를 확인하여

맞다면 true, 틀리다면 false가 되어

예외처리가 발생 한다.

반응형