Bcrypt 생성기
비밀번호를 bcrypt 해시로 안전하게 변환
Bcrypt 생성기란?
bcrypt은 비밀번호 해싱 전용 알고리즘으로, cost factor로 계산 비용을 조절합니다. 매 해시마다 랜덤 salt를 생성해 같은 비밀번호도 다른 해시값이 나옵니다. 다만 bcrypt은 72바이트를 넘는 부분을 조용히 무시하는데, 이 기준이 "72자"가 아니라 "72바이트"라는 점이 중요합니다. 한글은 UTF-8에서 한 글자가 보통 3바이트이므로, 72바이트는 한글 약 24자에 불과합니다. 예를 들어 "가나다...하AAAA"와 "가나다...하BBBB"처럼 앞부분(72바이트어치)은 같고 그 뒤만 다른 두 한글 비밀번호는 실제로 완전히 같은 해시를 만들어냅니다 — 직접 bcryptjs로 재현해 확인한 사실입니다. 이 페이지는 비밀번호 입력창 아래에 현재 바이트 수를 실시간으로 계산해 72바이트를 넘으면 즉시 경고를 표시하므로, 긴 한글 문장을 비밀번호로 쓰려는 경우 이 문제를 미리 알아챌 수 있습니다.
자주 묻는 질문
bcrypt 해시는 왜 매번 다른가요?
bcrypt은 해시마다 랜덤 salt를 생성합니다. 같은 비밀번호도 매번 다른 해시가 생성되므로 레인보우 테이블 공격을 방어합니다.
cost factor 10과 12의 차이는?
cost factor가 1 증가할 때마다 계산 시간이 2배 증가합니다. 12는 10보다 4배 느립니다.
bcrypt 해시 형식은?
$2a$10$salt22charshashval31chars 형식입니다. $2a$는 버전, $10$은 cost factor, 그 뒤가 salt+hash입니다.
비밀번호가 서버로 전송되나요?
아니요. bcryptjs 라이브러리가 브라우저에서만 실행되며 서버로 데이터를 전송하지 않습니다.
bcrypt 최대 비밀번호 길이는? 한글 비밀번호도 72자까지 되나요?
bcrypt은 72바이트를 넘는 부분을 조용히 무시합니다. 영문·숫자는 1자=1바이트라 72자와 72바이트가 거의 같지만, 한글은 1자당 약 3바이트라 72바이트는 한글 약 24자에 불과합니다. 24자를 넘는 한글 비밀번호는 그 뒷부분이 완전히 달라도 같은 해시가 나올 수 있어, 이 페이지는 입력한 비밀번호가 72바이트를 넘으면 실시간으로 경고를 표시합니다.
bcrypt vs Argon2 vs PBKDF2?
세 모두 키 스트레칭 알고리즘입니다. Argon2는 메모리 집약적이라 더 현대적이고 GPU 병렬 공격에 더 강합니다. bcrypt은 검증된 역사가 길고 광범위하게 지원됩니다.
생성된 해시를 데이터베이스에 저장하나요?
네. bcrypt 해시는 항상 60자 고정 길이이므로 VARCHAR(60) 컬럼에 저장하면 됩니다.
bcrypt 검증은 어떻게 하나요?
bcrypt-validator 도구에서 비밀번호와 해시를 비교 검증할 수 있습니다.