bcrypt 모듈에 대해 알아보자.
bcrypt 모듈
bcrypt 모듈은 비밀번호를 안전하게 저장하기 위한 해싱 알고리즘입니다.
특징
각 해시마다 Salt를 자동 생성하여 보안성을 강화합니다.
saltRounds
를 조정하여 해싱 연산 속도를 제어합니다.60자의 고정된 해시를 생성합니다.
GPU 병렬 처리에 강한 구조를 가지고 있어 공격 방어에 유리
설치
1
npm i bcrypt
hash 메서드
hash 메서드는 비밀번호를 해싱하여 안전하게 저장합니다.
return 값은 Salt + 해시값으로 결합되어 반환됩니다.
1
2
3
4
5
6
7
8
import bcrypt from "bcrypt";
const saltRounds = 10; // 해싱 복잡도
const password = "secure_password";
const hashedPassword = await bcrypt.hash(password, saltRounds);
console.log("Hashed Password:", hashedPassword);
compare 메서드
compare 메서드는 입력된 비밀번호와 저장된 해시를 비교합니다.
return 값은 Salt + 해시값으로 결합되어 반환됩니다.
1
2
3
4
5
6
7
const isMatch = await bcrypt.compare("secure_password", hashedPassword);
if (isMatch) {
console.log("비밀번호가 일치합니다!");
} else {
console.log("비밀번호가 일치하지 않습니다.");
}
장점
보안성
Salt를 통해 동일한 비밀번호에도 다른 해시값 생성되며 반복 연산으로 공격 난이도를 높일 수 있습니다.
간단한 API
추가적인 작업 없이 비밀번호 해싱과 검증을 쉽게 구현 가능합니다.
GPU 공격 방어
병렬 처리가 어려워 연산 시간이 증가하여 무차별 대입 공격을 방어합니다.
단점
속도
보안성을 위해 연산 비용이 크므로 성능이 중요한 서비스에는 부적합합니다.