구디아카데미/JAVA

1218 비밀번호 암호화

COCO_develop 2024. 12. 18. 15:45
@PostMapping("/addMember")
	public String addMember(Member member) {
		log.debug(member.toString());
		
		// 입력한 pw를 암호화
		String pw = member.getPw();
		log.debug("암호화 전: "+pw);
		try {
			MessageDigest md = MessageDigest.getInstance("SHA-256");
			md.update(pw.getBytes()); // SHA-256 방식으로 암호화 됨(인코딩)
			StringBuffer sb = new StringBuffer();
			for(byte b : md.digest()) { // b = 1byte (8bit) 숫자로 0~255
				// b -> 문자열로
				sb.append(String.format("%02x", b)); // %x: 16진수, %02x: 2자리 16진수
			}
			pw = sb.toString();
			log.debug("암호화 후: "+pw);
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		return "redirect:/";
	}

debug

 

--> 캡슐화, 매서드로 만들기

package com.example.app.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class SHA256Util {
	public static String encoding(String str) {
		String result = "";
		try {
			MessageDigest md = MessageDigest.getInstance("SHA-256");
			md.update(str.getBytes()); // SHA-256 방식으로 암호화 됨(인코딩)
			StringBuffer sb = new StringBuffer();
			for(byte b : md.digest()) { // b = 1byte (8bit) 숫자로 0~255
				// b -> 문자열로
				sb.append(String.format("%02x", b)); // %x: 16진수, %02x: 2자리 16진수
			}
			result = sb.toString();
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		return result;
	}
}

 

--> 매서드 호출

@PostMapping("/addMember")
public String addMember(Member member) {
    log.debug(member.toString());

    // 입력한 pw를 암호화
    String pw = SHA256Util.encoding(member.getPw());
    member.setPw(pw); // 암호화된 pw 주입

    memberService.addMember(member);

    return "redirect:/";
}