bcrypt 해시 생성기

무료 온라인 bcrypt 해시 생성기 도구. 100% 로컬 처리 — 데이터가 기기를 벗어나지 않습니다.

General
Password Hashing / KDF
Specialized
Deprecated
출력

결과가 여기에 표시됩니다...

입력 해시 계산

Usage Guide

bcrypt 소개

bcrypt는 Niels Provos와 David Mazières가 1999년 Blowfish 암호를 기반으로 설계한 비밀번호 해시 함수입니다. 브루트포스 공격을 비실용적으로 만들기 위해 의도적으로 느리고 계산 비용이 높게 설계되었습니다. bcrypt는 전 세계에서 가장 널리 배포된 비밀번호 해싱 알고리즘 중 하나로, Rails, Django, Laravel, Node.js(bcryptjs) 등의 프레임워크에서 네이티브로 지원됩니다. 각 bcrypt 해시에는 무작위 솔트와 비용 인수가 내장되어 있어, 해시 자체만으로 검증이 완결됩니다.

검증된 표준: bcrypt는 25년 이상 프로덕션 환경에서 사용되어 왔으며 비밀번호 저장에 신뢰할 수 있는 선택지입니다. OWASP는 최소 비용 인수 10을 권장하며, cost=12를 2023년 기준선으로 제시합니다. 새 프로젝트에는 Argon2id 가 권장되며, bcrypt는 기존 시스템에서 계속 완전히 신뢰할 수 있습니다.

사용 단계

이 도구는 두 가지 작업을 지원합니다: 비밀번호 해시화(암호화)와 해시에 대한 비밀번호 검증(복호화):

1. 해시 모드(암호화)'암호화' 모드를 선택하고, 입력 상자에 비밀번호를 입력한 후 '해시 계산'을 클릭
2. 해시 가져오기출력은 $2b$12$...와 같은 60자 bcrypt 문자열입니다 — 복사하여 데이터베이스에 저장
3. 검증 모드(복호화)'복호화' 모드를 선택하고, 입력 상자에 password|$2b$12$...(파이프로 구분)를 입력한 후 '복호화'를 클릭
4. 결과 확인비밀번호가 올바르면 '✓ Password matches'를 반환하고, 일치하지 않으면 오류 메시지를 반환
개인정보 보호: 모든 bcrypt 계산은 WebAssembly를 사용하여 브라우저에서 완전히 실행됩니다. 데이터는 서버로 전송되지 않습니다 — 완전한 오프라인 처리.

알고리즘 특징

bcrypt는 비밀번호 저장에 적합한 여러 속성을 가지고 있습니다:

의도적으로 느림Blowfish 키 스케줄은 계산 비용이 높아, 각 해시 시도를 느리게 하고 브루트포스 공격을 비용이 많이 들게 합니다
내장 솔트모든 해시에 고유한 128비트 무작위 솔트가 포함되어 레인보우 테이블 공격과 동일 비밀번호 공격을 방지합니다
조정 가능한 비용 인수비용 인수(4–31)는 작업량을 제어합니다: 증가할 때마다 계산 시간이 두 배가 되어 하드웨어 개선을 따라갈 수 있습니다
GPU 저항성Blowfish 키 스케줄의 메모리 액세스 패턴이 MD5나 SHA-256 같은 단순한 해시 함수에 비해 GPU 병렬성을 제한합니다
자체 완결형 해시60자 출력($2b$12$[22자 솔트][31자 해시])에 검증에 필요한 모든 파라미터가 포함되어 있습니다 — 추가 메타데이터 불필요
Argon2 대비 한계: bcrypt는 계산 중 약 4 KB의 메모리만 사용하여 메가바이트 단위의 메모리가 필요한 Argon2보다 ASIC 및 맞춤형 하드웨어 공격에 대한 저항성이 현저히 낮습니다. 새 프로젝트에는 Argon2id를 사용하세요. bcrypt는 기존 시스템 유지에 여전히 적합합니다.

비용 인수 선택 가이드

적절한 비용 인수를 선택하면 보안과 서버 성능의 균형을 맞출 수 있습니다:

비용 10OWASP 최소값(2023). 최신 서버에서 약 100 ms. 저트래픽 사이트나 리소스 제한 환경에 적합
비용 12OWASP 2023 기준선 권장사항. 약 400 ms. 대부분의 웹 애플리케이션에서 보안과 성능의 좋은 균형
비용 14약 1.5초. 민감한 애플리케이션(금융, 의료)을 위한 높은 보안. UI 차단을 방지하기 위해 비동기 처리가 필요할 수 있음
비용 31(최대)이론적 최대값 — 계산에 수 시간이 소요됩니다. 절대 프로덕션에서 사용하지 마세요; 오프라인 아카이빙이나 데모 목적으로만
튜닝 팁: 프로덕션 하드웨어에서 벤치마크하고 해시당 200–500 ms를 목표로 하세요. CPU가 개선됨에 따라 비용 인수를 증가시켜 동일한 실제 시간을 유지하세요. 새 해시는 업데이트된 비용을 사용할 수 있으며, 기존 해시는 비용이 해시 문자열에 저장되어 있으므로 계속 검증 가능합니다.

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)에서 기본 지원됩니다.

Recommended Configuration:
  • ✅ bcrypt(cost ≥ 12, 널리 지원됨 — 기존 시스템에 권장)
  • Argon2id(새 프로젝트에 권장)
  • PBKDF2-SHA256(≥ 600k 반복, FIPS 준수 환경)
  • ❌ 비밀번호에 SHA-256, MD5 또는 기타 범용 해시를 사용하지 마세요
권장: 레거시 시스템 호환성

수백만 개의 bcrypt 해시를 저장하는 시스템의 경우, bcrypt를 계속 사용하고 하드웨어가 개선될 때 비용 인수를 높이세요. 새 사용자는 투명하게 Argon2id 업그레이드할 수 있으며, bcrypt 해시($2b$ 접두사로 식별)는 계속 올바르게 검증됩니다.

Recommended Configuration:
  • ✅ 기존 해시에는 bcrypt 유지 — 강제 마이그레이션 불필요
  • ✅ 새 비밀번호와 업데이트된 비밀번호에는 Argon2id를 점진적으로 도입
  • ✅ 해시 접두사 감지($2b$ vs $argon2id$)로 검증 라우팅
  • 💡 마이그레이션 진행 상황 추적을 위해 사용자별 사용 알고리즘 기록
허용: API 키 해시화

bcrypt는 데이터베이스 저장 전에 API 키를 해시화할 수 있습니다. 대규모 요청별 검증에는 빠른 HMAC-SHA256 체계나 키의 SHA-256 해시를 선호하세요.

Recommended Configuration:
  • ✅ bcrypt(cost=10–12, 저빈도 검증에 적합)
  • SHA-256 + 솔트(더 빠름, 고엔트로피 키에 적합)
  • ✅ HMAC-SHA256(요청별 토큰 서명에)
  • 💡 빠른 조회를 위해 데이터베이스 인덱스로 해시 접두사(처음 8자) 사용
비권장: 파일 또는 데이터 암호화

bcrypt는 단방향 해시 함수이지 암호화 알고리즘이 아닙니다. 파일을 암호화할 수 없습니다. 또한 bcrypt의 72바이트 입력 제한으로 파일 내용 해시화에도 부적합합니다. 파일 암호화에는 대칭 암호(예: AES-256-GCM)를 사용하세요.

Recommended Configuration:
  • ❌ 파일 암호화에 bcrypt 사용 금지(비가역적)
  • ❌ 72바이트를 초과하는 데이터를 bcrypt로 해시하지 마세요
  • ✅ 대칭 파일 암호화에는 AES-256-GCM 사용
  • ✅ 비밀번호 기반 키 파생에는 Argon2id 또는 scrypt 사용
비권장: 일반 데이터 해시

bcrypt는 범용 데이터 무결성 검사에 너무 느립니다. 무결성 검증에는 SHA-256 또는 SHA-512를 사용하세요.

Recommended Configuration:
  • ❌ 데이터 무결성 검사나 콘텐츠 해시에 bcrypt 사용 금지
  • SHA-256(범용 무결성 해시)
  • ✅ BLAKE2b(고속 암호화 해시)
  • ✅ SHA-3 / SHA-512(더 높은 보안 마진)
비권장: 고빈도 인증

bcrypt는 느리게 설계되었습니다(cost=12에서 약 200–500 ms). 모든 API 요청에서 실행하면 서버가 마비됩니다. 로그인 시 한 번만 bcrypt를 사용하고, 이후 요청에는 서명된 JWT를 발급하세요.

Recommended Configuration:
  • ❌ 모든 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를 사용하세요.

토론 및 피드백

0개의 댓글