웹 프로그래밍을 하다보면 회원가입과 로그인 기능을 구현하게 된다.
이때 비밀번호는 중요한 개인 정보로서 운영자도 알 수 없게 암호화하여 저장을 하는 것을 요구하고 있다.
여기서는 어떻게 하면 암호화하여 저장할 수 있는지 기술한다.
첨부한 소스코드는 spring mvc 프로젝트로 만든 sample 코드이다.
파일 구성은 다음과 같다.
- HomeController.java : home()
+ 프로젝트가 시작되면 호출된다. home.jsp를 보여준다.
- home.jsp : 메인 화면으로 회원가입과 로그인에 대한 메뉴 버튼이 있다.
+ 회원가입 메뉴를 누르면 회원가입 입력창으로 이동
+ 로그인 메뉴를 누르면 로그인 입력창으로 이동
- joinForm.jsp : 회원가입 정보(아이디, 비밀번호)를 입력 받아 서버로 회워가입을 요청한다.
- HomeController.java : join() - GET
+ id와 pw를 입력 받고, pw를 암호화하여 임시로 저장하는 클래스에 저장한다.
+ joinSuccess.jsp를 보여준다.
- joinSuccess.jsp
+ 회원가입 성공을 알리고
+ 홈(메인)으로 이동하는 메뉴를 둔다.
- loginForm.jsp : 로그인에 필요한 정보(id, password)를 입력 받아 서버로 로그인을 요청한다.
- HomeController login() - Post
+ 로그인 정보 (id, pw)로 입력받은 것과
+ 임시로 저장한 암호화된 비밀번호를 가져와
+ 로그인 시 입력한 비밀번호와 암호화된 비밀번호를 이용하여 사용자에 대한 비밀번호 검증을 한다.
+ 성공하면 loginSuccess.jsp로 이동하고
+ 실패하면 loginFail.jsp로 이동한다.
- loginSuccess.jsp : 로그인 성공을 알리고, 홈으로 이동하는 메뉴를 보여준다.
- loginFail.jsp : 로그인 실패를 알리고 홈으로 이동하는 메뉴를 보여준다.
- Utilities.java
+ makeSha256BCrypt() : 비밀번호를 암호화 한다.
+ checkSha256BCrypt() : 로그인시 입력한 비밀번호와 데이터베이스에 저장된 비밀번호를 사용하여 비밀번호 검증을 수행한다.
- SHA256.java : SHA 알고리즘을 수행한다.
- BCrypt.java : 암호화나 복호화를 수행한다.
'웹개발' 카테고리의 다른 글
홈 페이지를 개발할 때 고려해야 할 사항 목록 (기능적인 측면) (0) | 2017.03.06 |
---|---|
게시판 관리기능 : 여러 개의 게시판이 필요할 때 (1/5) (0) | 2017.03.04 |
Spring MVC에서 네이버 스마트 에디터 적용하기 (다중 사진 첨부 포함) (1) | 2017.02.25 |
PhoneGap 개발 환경 설치 (Adobe PhoneGap 사이트 참조) (0) | 2017.02.09 |
sample 프로젝트 소스 코드 (0) | 2017.02.07 |