Bcrypt 생성기

비밀번호를 Bcrypt 형식으로 해싱하고 검증합니다. Salt 라운드를 설정하고 해시 구조를 분석할 수 있습니다.

이 도구는 SHA-256 기반 시뮬레이션으로 Bcrypt 형식($2b$)의 해시를 생성합니다. 실제 Bcrypt 알고리즘과 동일하지 않으나, 해시 구조와 동작 원리를 학습하는 데 유용합니다.
10
반복 횟수: 1,024회 | 예상 시간: ~100ms
Bcrypt 해시 결과

비밀번호와 Bcrypt 해시를 입력하면, 해당 비밀번호가 해시와 일치하는지 검증합니다. 이 도구에서 생성한 해시만 검증할 수 있습니다.
Bcrypt 해시 문자열을 입력하면 각 구성 요소를 분석하여 보여줍니다.
Bcrypt 해시 구조 ($2b$rounds$salt+hash)
$2b$ 10 $ abcdefghijklmnopqrstuv ABCDEFGHIJKLMNOPQRSTUVWXYZabcd

구성 요소 설명:
$2b$ 알고리즘 식별자 - Bcrypt 버전 (2a, 2b, 2y 등)
10 Cost Factor - Salt 라운드 수 (2^n 반복)
22자 Salt - Base64 인코딩된 128비트 랜덤 솔트
31자 Hash - Base64 인코딩된 184비트 해시값

Bcrypt 생성기 완벽 가이드

Bcrypt는 1999년 Niels Provos와 David Mazieres에 의해 설계된 비밀번호 해싱 함수로, Blowfish 암호를 기반으로 합니다. Bcrypt는 일반적인 SHA-256이나 MD5와 달리 의도적으로 느린 해시 함수를 사용하며, 이는 무차별 대입 공격(Brute Force Attack)에 대한 저항력을 크게 높여줍니다. Salt를 자동으로 생성하고 해시에 포함시키기 때문에 레인보우 테이블 공격에도 강합니다. 현재 대부분의 웹 프레임워크와 프로그래밍 언어에서 비밀번호 저장의 표준 방법으로 Bcrypt를 권장하고 있으며, Node.js의 bcrypt 패키지, Python의 passlib, Java의 Spring Security 등에서 기본적으로 지원됩니다.

Bcrypt 해시의 가장 큰 특징은 적응형 비용 인자(Adaptive Cost Factor)입니다. Salt 라운드라고도 불리는 이 값은 해시 연산의 반복 횟수를 2의 거듭제곱으로 결정합니다. 예를 들어 라운드 10은 2^10 = 1,024회, 라운드 12는 2^12 = 4,096회의 반복을 의미합니다. 하드웨어 성능이 향상됨에 따라 이 값을 높여 보안 수준을 유지할 수 있어, 시간이 지나도 안전한 비밀번호 저장이 가능합니다. 현재 권장되는 Salt 라운드는 10~12이며, 보안이 극도로 중요한 시스템에서는 14 이상을 사용하기도 합니다.

이 온라인 Bcrypt 생성기는 SHA-256 기반 시뮬레이션을 통해 Bcrypt 형식($2b$)의 해시를 생성합니다. 실제 Blowfish 기반 Bcrypt 알고리즘은 브라우저 환경에서 순수 JavaScript로 구현하기에는 매우 복잡하므로, 학습과 테스트 목적으로 SHA-256 해시에 Salt와 라운드 정보를 결합하여 Bcrypt 형식으로 출력합니다. 이를 통해 Bcrypt 해시의 구조, Salt의 역할, Cost Factor의 의미를 직관적으로 이해할 수 있습니다. 실제 프로덕션 환경에서는 반드시 서버 사이드의 검증된 Bcrypt 라이브러리를 사용해야 합니다.

Bcrypt vs SHA-256 vs MD5 비교

일반적인 해시 함수(SHA-256, MD5)는 속도가 빠르도록 설계되었기 때문에, GPU를 활용한 공격자가 초당 수십억 개의 해시를 시도할 수 있습니다. 반면 Bcrypt는 의도적으로 느리게 설계되어 있어 공격 비용을 기하급수적으로 높입니다.

Salt 라운드(Cost Factor) 선택 가이드

자주 묻는 질문 (FAQ)

Q. Bcrypt 해시를 복호화(역변환)할 수 있나요?

A. 아니요, Bcrypt는 단방향 해시 함수입니다. 해시값에서 원본 비밀번호를 역으로 추출하는 것은 수학적으로 불가능합니다. 비밀번호 검증은 입력된 비밀번호를 같은 Salt와 라운드로 다시 해싱한 후, 저장된 해시와 비교하는 방식으로 이루어집니다.

Q. 같은 비밀번호를 해싱하면 항상 같은 결과가 나오나요?

A. 아니요, Bcrypt는 매번 새로운 랜덤 Salt를 생성하기 때문에 같은 비밀번호라도 해싱할 때마다 다른 결과가 나옵니다. 이것이 Bcrypt의 중요한 보안 특성으로, 동일한 비밀번호를 사용하는 사용자들의 해시값이 서로 다르게 저장됩니다.

Q. Salt 라운드를 높이면 보안이 더 좋아지나요?

A. 네, Salt 라운드가 1 증가할 때마다 해싱 시간이 2배로 늘어납니다. 라운드 10은 약 100ms, 라운드 12는 약 400ms, 라운드 14는 약 1.6초가 소요됩니다. 하지만 서버 성능과 사용자 경험을 고려해야 하므로, 일반적으로 10~12가 적절한 균형점입니다.

Q. 이 도구에서 생성한 해시는 프로덕션에서 사용할 수 있나요?

A. 이 도구는 SHA-256 기반 시뮬레이션이므로 실제 Bcrypt 알고리즘과는 다릅니다. 프로덕션 환경에서는 반드시 서버 사이드의 검증된 Bcrypt 라이브러리(Node.js의 bcrypt, Python의 passlib 등)를 사용하세요. 이 도구는 학습과 Bcrypt 해시 구조 이해를 위한 용도입니다.

Q. Bcrypt 해시의 최대 입력 길이 제한이 있나요?

A. 네, 표준 Bcrypt 구현은 입력을 최대 72바이트로 제한합니다. 그 이상의 비밀번호는 잘리게 됩니다. 긴 비밀번호가 필요한 경우 SHA-256으로 먼저 해싱한 후 Bcrypt를 적용하는 방법이 사용되기도 합니다.