웹 프로그래밍을 하다보면 회원가입과 로그인 기능을 구현하게 된다.

이때 비밀번호는 중요한 개인 정보로서 운영자도 알 수 없게 암호화하여 저장을 하는 것을 요구하고 있다.

여기서는 어떻게 하면 암호화하여 저장할 수 있는지 기술한다.

security.zip

첨부한 소스코드는 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 : 암호화나 복호화를 수행한다.

Posted by 세상을 살아가는 사람
,