Eggs Sunny Side Up
본문 바로가기
프레임워크(Framework)/Spring

[Spring] SHA256 비밀번호 암호화, 로그인

by guswn100059 2023. 7. 17.

maven repository에서 비밀번호 암호화 라이브러리 가져오기

<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
		<dependency>
		    <groupId>commons-codec</groupId>
		    <artifactId>commons-codec</artifactId>
		    <version>1.15</version>
		</dependency>

SHA256Util.java

package kr.mds.controller;

import java.security.MessageDigest;

import org.springframework.stereotype.Component;

@Component
public class SHA256Util {
	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();
		}
	}
}

java 클래스

@Controller
public class userController {

// 비밀번호 암호화 의존성 주입
	@Autowired
	private SHA256Util pwEncoder;

// 회원가입 후 로그인 페이지로 이동
	@PostMapping("/signUp.com")
	public String singUp(User user) {
		// 비밀번호 암호화
		System.out.println("첫번째:" + user.getU_pw());
		System.out.println("첫번째:" + user.getU_pw_confirm());
		// 비밀번호 암호화 (sha256)
		String u_pw = pwEncoder.encrypt(user.getU_pw());
		String u_pw_confirm = pwEncoder.encrypt(user.getU_pw_confirm());
		user.setU_pw(u_pw);
		user.setU_pw_confirm(u_pw_confirm);
		System.out.println("두번째:" + user.getU_pw());
		System.out.println("두번째:" + user.getU_pw_confirm());
		// 회원가입 메서드
		int result = mapper.signUp(user);

		if (result > 0)
			return "redirect:/signIn.com";
		else
			return "signUp";
	}
    
// 로그인 후 메인페이지로 이동
	@PostMapping("/")
	public String main(User user, Model model) {
		
		// 암호화된 비밀번호로 로그인
		System.out.println("첫번째:" + user.getU_pw());
		String u_pw = pwEncoder.encrypt(user.getU_pw());
		user.setU_pw(u_pw);
		System.out.println("두번째:" + user.getU_pw());

		User result = mapper.signIn(user);
		model.addAttribute("result", result);
		
		// 메인페이지에서 아이디에 맞게 rtsp 영상 송신
		CCTV list = cctvmapper.listSelect(user.getU_id());
		model.addAttribute("list", list);

		if (result != null)
			return "main";
		else
			return "redirect:/signIn.com";

	}

}

=> 회원가입할 때 입력받은 비밀번호 u_pw를 암호화하여 setU_pw에 담아준다. set해준 변수(비밀번호)는 기능구현할 DAO 메소드에 저장되어진다.

=> 로그인할 때도 회원가입과 마찬가지로 입력받은 비밀번호를 암호화하여 set해주면 DAO 메소드에 저장되어져 사용자가 입력받은 비밀번호와 DB에 저장된 해쉬화 암호를 알아서 인식한다.



 

 

참조 블로그)

https://m.blog.naver.com/vnemftnsska2/221414102588

 

Spring 비밀번호 암호화 방법 - SHA256

프로그래밍을 공부하기 전 어느 사이트나 비슷한 아이디와 비밀번호를 가지고 있는 제 아이디와 비밀번호를...

blog.naver.com

 

댓글