아이디와 비밀번호 암호화하기
[해야할 일]
(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>
|
결과)
댓글 없음:
댓글 쓰기