bcrypt 비밀번호 해시를 생성하고 검증합니다. 작업 인수와 알고리즘을 구성하세요.
CSPRNG를 사용하여 임의 128비트(16바이트) 솔트가 생성됩니다. 솔트는 레인보우 테이블 공격을 방지합니다 — 동일한 비밀번호도 다른 해시를 생성합니다.
Eksblowfish 알고리즘이 2^n 반복(n은 비용 인수)을 실행합니다. 비용을 두 배로 늘리면 계산 시간도 두 배가 됩니다 — 무차별 대입 공격을 비례적으로 어렵게 만듭니다.
출력에는 모든 것이 인코딩됩니다: $2b$12$[22자 솔트][31자 해시]. "$2b$12$" 접두사는 bcrypt에 cost=12를 사용하도록 알립니다. 별도의 솔트 컬럼이 필요하지 않습니다.
$2b$12$eImiTAiTAi25sDB8iBjEJfF2PbO0oagzXCgKCQfHIFnOSuJl.J2
$2b$알고리즘 버전 (2a, 2b, 2y)
12$비용 인수 (2^12 = 4,096 라운드)
22자Base64 인코딩 솔트 (128비트)
31자Base64 인코딩 해시 (184비트)
| 비용 | 반복 횟수 | 예상 시간 | 권장 사항 |
|---|---|---|---|
| 10 | 1,024 | ~50-100ms | 신규 애플리케이션 최솟값 |
| 11 | 2,048 | ~100-200ms | 높은 트래픽 API에 적합 |
| 12 | 4,096 | ~200-400ms | 권장 기본값 (2025) |
| 13 | 8,192 | ~400-800ms | 고보안 애플리케이션 |
| 14 | 16,384 | ~800ms-1.6s | 최대 실용적 비용 |
현대 서버 CPU에서의 대략적인 시간. 항상 실제 하드웨어에서 벤치마크하세요.
다음도 확인하세요: 해시 생성기 MD5, SHA-1, SHA-256, SHA-512 및 기타 암호화 해시 함수용.
bcrypt는 Niels Provos와 David Mazières가 1999년 OpenBSD를 위해 설계한 비밀번호 해싱 함수입니다. MD5나 SHA와 달리 bcrypt는 의도적으로 느리고 CPU 집약적이어서 무차별 대입 공격을 비실용적으로 만듭니다. 자동으로 소금을 통합하여 레인보우 테이블 공격을 방지합니다. 모든 비밀번호 저장에 bcrypt(또는 Argon2)를 사용하세요 — 평문이나 빠른 해시(MD5/SHA)로 비밀번호를 저장하지 마세요.
비용 인수(작업 인수)는 bcrypt의 속도를 제어합니다. 각 증가는 계산 시간을 두 배로 늘립니다. 사용자 인증의 경우 서버 하드웨어에서 100-300ms 해시 시간을 목표로 하세요. 12에서 시작하여 벤치마크하고 로그인 시간이 500ms 이하로 유지되는 가장 높은 값을 사용하세요. 높을수록 더 안전하지만 느립니다. 비용 10은 2025년 신규 애플리케이션의 최소 권장 값입니다.
둘 다 현대적인 비밀번호 해싱 알고리즘입니다. bcrypt는 검증된(25년 이상) 알고리즘으로 널리 지원됩니다. Argon2는 Password Hashing Competition(2015)에서 우승했으며 메모리 집약성을 사용하여 GPU 공격에 더 강합니다. Argon2id(권장 변형)는 사이드 채널 공격과 GPU 공격 모두에 저항하기 위해 Argon2i와 Argon2d를 결합합니다. 새 애플리케이션의 경우 Argon2id가 선호됩니다.
이 도구는 모든 bcrypt 라이브러리와 호환되는 표준 bcrypt 해시를 생성합니다. 해싱은 bcryptjs 라이브러리를 사용하여 완전히 브라우저에서 실행됩니다 — 비밀번호는 서버로 전송되지 않습니다. 그러나 프로덕션 애플리케이션에서는 항상 서버 측에서 비밀번호 해시를 생성하세요. 클라이언트 측 데모는 학습 및 테스트 목적으로만 사용하세요.
모든 해싱은 브라우저에서 로컬로 이루어집니다. 비밀번호는 절대 전송되거나 저장되지 않습니다.