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개의 댓글
나