내 블로그 목록

2018년 8월 3일 금요일

[SpringFramework] 단방향 암호화_sha256

아이디와 비밀번호 암호화하기


[해야할 일]

(1) ID와 비밀번호를 입력받을 View 생성
(1)Sha256의 서비스 클래스 생성
(2)서비스 클래스를 사용할 Controller 생성
(3)servlet-context.xml에 서비스 클래스 빈 등록
(4)결과 응답 View 생성
(5)home.jsp에서 인덱스 생성


(1) ID와 비밀번호를 입력받을 View 생성 [form.jsp]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
   <form method="post">
       아이디 : <input type="text" name="id"><br>
       비밀번호 : <input type="password" name="pwd"><br>
       <input type="submit" value="로그인">
   </form>
</body>
</html>



(1)Sha256의 서비스 클래스 생성 [Sha256.java]

이 파일은 그냥 ‘암호화하는 클래스’라고 이해하고 따라치면 된다.

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
32
33
34
package com.bitcampi.mvc0803;
import java.security.MessageDigest;
public class Sha256 {
   
   public static String encrypt(String planText) {
       try {
           MessageDigest md = MessageDigest.getInstance("SHA-256");
           md.update(planText.getBytes());
           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)서비스 클래스를 사용할 Controller 생성 [Sha256Controller.java]

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
32
33
34
35
36
37
38
39
40
41
package com.bitcampi.mvc0803;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
@RequestMapping("/login")
public class Sha256Controller {
   
   @Autowired
   Sha256 sha;
   @RequestMapping(method=RequestMethod.GET)
   public String form() {
       return "form";
   }
   
   @RequestMapping(method=RequestMethod.POST)
   public String login(@RequestParam("id") String id, @RequestParam("pwd") String pwd, Model model) {
       
       System.out.println("암호화 전 아이디 : " + id);
       System.out.println("암호화 전 비밀번호 : " + pwd);
       
       id = sha.encrypt(id);
       pwd = sha.encrypt(pwd);
       
       System.out.println("-----------------------------");
       System.out.println("암호화 후 아이디 : " + id);
       System.out.println("암호화 후 비밀번호 : " + pwd);
       
       model.addAttribute("id", id);
       model.addAttribute("pwd", pwd);
       return "login";
   }
   
}



(3)servlet-context.xml에 서비스 클래스 빈 등록


1
2
<!-- 단방향 암호화의 서비스 클래스 빈 등록 -->
   <beans:bean id="Sha256" class="com.bitcampi.mvc0803.Sha256" />


(4)결과 응답 View 생성 [login.jsp]


   
1
2
3
4
5
6
7
8
9
10
11
12
<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
   <h1> ${id} / ${pwd} </h1>
</body>
</html>




(5)home.jsp에서 인덱스 생성


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
<%@ page session="false" %>
<html>
<head>
   <title>Home</title>
</head>
<body>
<h1>
   Spring MVC 2018/08/03
</h1>
<ul>
   <li><a href="mail/simpleMail">메일 전송(SimpleMail)</a></li>
   <li><a href="mail/htmlMail">메일 전송(HTMLMail)</a></li>
   <li><a href="mail/fileMail">메일 전송(FileMail)</a></li>
   <li><a href="login">로그인</a></li>
   
</ul>
</body>
</html>



결과)



댓글 없음:

댓글 쓰기