본문 바로가기

WEB/Java

Bcrypt와 비밀번호 암호화

Bcrypt를 이용해 password 암호화하는 법

 

 

Bcrypt란 강력한 암호 해시 함수로 비밀번호 저장과 관련된 보안에 사용하는 라이브러리

주요 기능으로 Key Stretching, Salt가 있음

*key stretchinng이란 만들어진 해시 값을 반복 연산하여 브루트포스 공격을 어렵게 만드는 방법

*Salt란 암호화 하는 값에 추가 입력으로 사용되는 랜덤 데이터

 

 

주요 메서드

gensalt() 솔트값 생성 함수
hashpw(비밀번호, 솔트값) 비밀번호 해시화 함수
checkpw(비밀번호, 해시화된 비밀번호) 비밀번호 검증 함
kdf(비밀번호, 솔트값, 도출할 키의 길이, 해시 계산 반복횟수) 비밀번호 바탕의 안전한 암호화 키를 도출

 

 

이용예시

PasswordBcrypt

import org.mindrot.jbcrypt.BCrypt;


public class PasswordBcrypt{

    //비밀번호 암호화
    public String encrypt(String password) {
        return BCrypt.hashpw(password,BCrypt.gensalt());
    }

    //비밀번호와 암호화된 비밀번호가 서로 맞는지 확인
    public Boolean isMatch(String password, String hashPassword) {
        return BCrypt.checkpw(password,hashPassword);
    }
}

 

 

UserController

public void createUser(UserCreateRequestDto userCreateRequestDto) {

       //생략
     
		//전달 받은 비밀번호 암호화
        String hashPassword= encryptHelper.encrypt(userCreateRequestDto.getPassword());

        User user =new User(userCreateRequestDto.getUserId(),
                hashPassword,
                userCreateRequestDto.getEmail());

       //생략


    }

 

'WEB > Java' 카테고리의 다른 글

람다식  (1) 2024.10.02
역직렬화 후 추가 가공  (0) 2024.06.16
람다식  (0) 2024.02.21
indexOf()  (1) 2024.02.07
예외처리  (1) 2023.12.07