DTO, DAO
RequestJoin : DTO
MemberMapper : DAO
DTO(Data Transfer Object)는 계층 간 데이터 교환을 위한 객체로, 데이터베이스와 직접적인 연관 없이 사용된다. 예를 들어, RequestJoin 같은 DTO는 회원 가입 요청 정보를 담는 데 사용된다.
DAO(Data Access Object)는 데이터베이스와 직접 상호작용하는 객체로, CRUD(Create, Read, Update, Delete) 작업을 수행한다. MemberMapper 같은 DAO는 회원 정보를 조회하거나 저장하는 역할을 한다.
양방향 암호화
암호화된 데이터를 다시 복호화할 수 있는 방식으로, AES, RSA 같은 알고리즘이 있다. 비밀번호보다는 신용카드 정보 같은 복호화가 필요한 데이터에 사용된다.
단방향 암호화 (해시)
암호화된 데이터를 복호화할 수 없는 방식이다. 비밀번호 저장에 적합하며, 대표적인 해시 알고리즘으로 MD5, SHA-256, SHA-512 등이 있다.
고정 해시 : 같은 값이면 항상 같은 해시 값이 생성된다. (MD5, SHA 계열)
유동 해시 : 같은 값이라도 매번 다른 해시 값이 생성된다. (Salt 사용, 예: BCrypt)
BCrypt는 보안성이 뛰어난 유동 해시 방식으로, 비밀번호 저장 시 주로 사용된다.
hashpw(...) : 비밀번호를 해시화
checkpw(...) : 해시 값을 검증
import org.mindrot.jbcrypt.BCrypt;
public class PasswordEncryption {
public static void main(String[] args) {
String password = "mySecurePassword";
// 비밀번호 해싱
String hashedPassword = BCrypt.hashpw(password, BCrypt.gensalt());
System.out.println("Hashed Password: " + hashedPassword);
// 비밀번호 검증
boolean isMatch = BCrypt.checkpw(password, hashedPassword);
System.out.println("Password Match: " + isMatch);
}
}