bcrypt 해시 생성기
무료 온라인 bcrypt 해시 생성기 도구. 100% 로컬 처리 — 데이터가 기기를 벗어나지 않습니다.
결과가 여기에 표시됩니다...
입력 → 해시 계산
Usage Guide
bcrypt 소개
bcrypt는 Niels Provos와 David Mazières가 1999년 Blowfish 암호를 기반으로 설계한 비밀번호 해시 함수입니다. 브루트포스 공격을 비실용적으로 만들기 위해 의도적으로 느리고 계산 비용이 높게 설계되었습니다. bcrypt는 전 세계에서 가장 널리 배포된 비밀번호 해싱 알고리즘 중 하나로, Rails, Django, Laravel, Node.js(bcryptjs) 등의 프레임워크에서 네이티브로 지원됩니다. 각 bcrypt 해시에는 무작위 솔트와 비용 인수가 내장되어 있어, 해시 자체만으로 검증이 완결됩니다.
사용 단계
이 도구는 두 가지 작업을 지원합니다: 비밀번호 해시화(암호화)와 해시에 대한 비밀번호 검증(복호화):
알고리즘 특징
bcrypt는 비밀번호 저장에 적합한 여러 속성을 가지고 있습니다:
비용 인수 선택 가이드
적절한 비용 인수를 선택하면 보안과 서버 성능의 균형을 맞출 수 있습니다:
FAQ
Q: bcrypt 출력 형식은 무엇인가요?
A: bcrypt 해시는 항상 정확히 60자이며 다음과 같이 보입니다: $2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/lewdBdXyXu2zXpOme.
분석:$2b$: bcrypt 버전 식별자.12$: 비용 인수.
다음 22자: Base64 인코딩된 128비트 무작위 솔트.
마지막 31자: Base64 인코딩된 184비트 파생 해시.
핵심 속성: 모든 파라미터가 문자열에 내장되어 있습니다 — 나중에 비밀번호를 검증하는 데 추가 저장이 필요하지 않습니다.
Q: bcrypt와 Argon2를 어떻게 비교하나요?
A: bcrypt(1999): 계산 집약적, 약 4 KB 메모리, 보통 수준의 GPU 저항성, 범용 지원. Argon2 (2015): 메모리 집약적(구성 가능, 기본 64 MB), 훨씬 강한 ASIC/GPU 저항성, OWASP 및 NIST 권장. bcrypt 사용 시기: 기존 시스템 유지 또는 Argon2를 아직 사용할 수 없는 경우. Argon2 사용 시기: 모든 새 프로젝트.
Q: 왜 bcrypt를 파일이나 대용량 데이터 해시에 사용할 수 없나요?
A: bcrypt에는 72바이트 입력 제한이 있습니다. 72번째 바이트 이후의 문자는 자동으로 무시됩니다. 파일 무결성을 위해 SHA-256 또는 SHA-512를 사용하세요. bcrypt는 짧고 사람이 입력한 비밀번호 전용으로 설계되었습니다.
Q: 데이터베이스가 침해되어도 bcrypt는 안전한가요?
A: 예 — bcrypt 해시는 단방향입니다. cost=12에서 단일 CPU 코어는 초당 약 2–5개의 해시를 시도할 수 있어, 강한 비밀번호에 대한 전수 조사 공격은 사실상 불가능합니다. 그러나 bcrypt는 약한 비밀번호를 보호하지 않습니다 — 항상 최소 비밀번호 강도 정책을 적용하세요.
Q: 프로덕션에서 어떤 비용 인수를 사용해야 하나요?
A: OWASP 2023 권장사항: cost=12를 기준선으로. 프로덕션 서버에서 벤치마크하고 해시를 500 ms 미만으로 유지하는 가장 높은 비용 인수를 선택하세요. cost=10 미만으로는 절대 내려가지 마세요. 하드웨어가 개선될 때마다 2–3년마다 재검토하세요.
Q: bcrypt를 API 키나 토큰 저장에 사용할 수 있나요?
A: 예, 주의사항이 있습니다. bcrypt는 72바이트 미만이고 드물게 검증되는 API 키 및 토큰 해시화에 적합합니다. 고빈도 검증에는 대신 빠른 SHA-256 + 솔트 방식을 사용하세요.
Use Cases
권장: 사용자 비밀번호 저장
이것이 bcrypt의 주요 사용 사례입니다. bcrypt(cost ≥ 12)로 해시하고 60자 문자열을 저장합니다. 로그인 시 bcrypt 검증을 실행합니다. bcrypt는 Rails(has_secure_password), Django, Laravel, Node.js(bcryptjs)에서 기본 지원됩니다.
권장: 레거시 시스템 호환성
수백만 개의 bcrypt 해시를 저장하는 시스템의 경우, bcrypt를 계속 사용하고 하드웨어가 개선될 때 비용 인수를 높이세요. 새 사용자는 투명하게 Argon2id로 업그레이드할 수 있으며, bcrypt 해시($2b$ 접두사로 식별)는 계속 올바르게 검증됩니다.
- ✅ 기존 해시에는 bcrypt 유지 — 강제 마이그레이션 불필요
- ✅ 새 비밀번호와 업데이트된 비밀번호에는 Argon2id를 점진적으로 도입
- ✅ 해시 접두사 감지($2b$ vs $argon2id$)로 검증 라우팅
- 💡 마이그레이션 진행 상황 추적을 위해 사용자별 사용 알고리즘 기록
허용: API 키 해시화
비권장: 파일 또는 데이터 암호화
bcrypt는 단방향 해시 함수이지 암호화 알고리즘이 아닙니다. 파일을 암호화할 수 없습니다. 또한 bcrypt의 72바이트 입력 제한으로 파일 내용 해시화에도 부적합합니다. 파일 암호화에는 대칭 암호(예: AES-256-GCM)를 사용하세요.
- ❌ 파일 암호화에 bcrypt 사용 금지(비가역적)
- ❌ 72바이트를 초과하는 데이터를 bcrypt로 해시하지 마세요
- ✅ 대칭 파일 암호화에는 AES-256-GCM 사용
- ✅ 비밀번호 기반 키 파생에는 Argon2id 또는 scrypt 사용
비권장: 일반 데이터 해시
비권장: 고빈도 인증
bcrypt는 느리게 설계되었습니다(cost=12에서 약 200–500 ms). 모든 API 요청에서 실행하면 서버가 마비됩니다. 로그인 시 한 번만 bcrypt를 사용하고, 이후 요청에는 서명된 JWT를 발급하세요.
- ❌ 모든 API 요청에서 bcrypt 실행 금지
- ✅ JWT + HMAC-SHA256(상태 비저장, 빠른 요청별 인증)
- ✅ Session + Cookie(전통적인 서버사이드 세션 관리)
- ✅ OAuth 2.0 / OpenID Connect(연합 ID, 토큰 기반)
모범 사례 요약
- 기존 시스템의 사용자 비밀번호 저장에는 bcrypt(cost ≥ 12)를 사용하세요. 새 프로젝트에는 Argon2id를 선호하세요.
- 일반 데이터 해시, 파일 암호화 또는 72바이트를 초과하는 데이터에는 절대 bcrypt를 사용하지 마세요.
- 프로덕션 하드웨어에서 벤치마크하고 해시당 200–500 ms를 목표로 하세요. 2–3년마다 비용 인수를 높이세요.
- 고빈도 인증 시나리오에서는 로그인 시에만 bcrypt를 사용하고, 이후 JWT 또는 세션 토큰을 발급하세요.
- bcrypt에서 Argon2id로의 점진적 마이그레이션: 기존 해시는 bcrypt를 유지하고, 새 비밀번호에는 Argon2id를 사용하세요.