Skip to content

Bcrypt 해시 생성 및 검증 도구

온라인으로 bcrypt 비밀번호 해시를 생성·검증하세요 — 조절 가능한 비용 인자, $2b$/$2a$/$2y$ 접두사 지원. 100% 브라우저에서 실행, 비밀번호는 업로드되지 않습니다.

트래킹 없음 브라우저 실행 무료
100% 브라우저에서 실행 — 비밀번호는 기기를 절대 벗어나지 않습니다.
Bcrypt 해시
해시 구조
버전
비용
솔트
다이제스트

Node bcrypt, Python bcrypt, Apache htpasswd와 출력을 대조한 bcrypt 참조 동작을 따릅니다 — Go Tools 보안팀 · Jun 12, 2026

Bcrypt란?

Bcrypt는 비밀번호를 안전하게 저장하기 위해 특별히 설계된 비밀번호 해싱 함수입니다. 비밀번호를 평문으로 보관하는 대신, 서버는 단방향 bcrypt 해시를 저장합니다. 사용자가 로그인하면 서버는 제출된 비밀번호를 같은 방식으로 해시한 뒤 두 해시가 일치하는지 확인합니다. Bcrypt는 Blowfish 암호를 기반으로 하며 1999년 Niels Provos와 David Mazières가 설계했는데, SHA-256 같은 범용 해시와 구별되는 의도적 특징이 하나 있습니다. 바로 의도적으로 느리게 만들어졌으며, 하드웨어가 빨라짐에 따라 조절 가능한 비용 인자로 시간이 지날수록 더 느리게 만들 수 있다는 점입니다.

bcrypt 해시는 하나의 자기 기술적인 60자 문자열입니다 — 예를 들어 $2b$12$dUSFKqT1FCMYZ6hcQfsxuONizEqcX8IGK8snfVSowP5Uu.TDJoPUq처럼요. 여기에는 네 부분이 담겨 있습니다. 버전($2b$), 비용(12, 로그 형태의 작업 인자), 22자 Base64 솔트, 그리고 31자 Base64 다이제스트입니다. 솔트가 무작위이며 해시에 포함되어 있으므로 같은 비밀번호라도 매번 다른 해시가 만들어지는데 — 이는 레인보우 테이블을 무력화하고 두 사용자가 같은 비밀번호를 골랐다는 사실을 숨깁니다. 검증은 저장된 해시에서 솔트와 비용을 다시 읽어내 후보를 재해시하므로, bcrypt는 비밀번호를 복구하기 위해 해시를 되돌릴 필요가 (그리고 되돌릴 수도) 없습니다.

이 도구는 번들된 bcrypt 구현을 사용해 전적으로 브라우저에서 실행됩니다 — 비밀번호나 해시는 절대 업로드되지 않습니다. 선택한 비용과 접두사로 해시를 생성하고, 기존 해시에 대해 비밀번호를 검증하며, 해시의 구조를 읽는 데 사용하세요. 다른 보안 도구와도 자연스럽게 어울립니다. htpasswd 생성기(bcrypt 항목을 직접 출력할 수 있습니다)로 HTTP Basic Auth를 통해 디렉터리를 보호하고, 무작위 비밀번호 생성기로 해시할 강력한 비밀번호를 만들며, 느린 비밀번호 해시가 아니라 빠른 범용 체크섬이 필요할 때는 SHA-256 생성기를 사용하세요. 비밀번호를 어떤 알고리즘으로 저장할지 결정 중이라면 bcrypt vs Argon2 vs scrypt에서 선택지를 비교해 보세요.

// Node.js — bcryptjs / bcrypt (emits $2b$)
const bcrypt = require('bcrypt');
const hash = await bcrypt.hash('correct horse battery staple', 12);
// -> $2b$12$dUSFKqT1FCMYZ6hcQfsxuONizEqcX8IGK8snfVSowP5Uu.TDJoPUq
const ok = await bcrypt.compare('correct horse battery staple', hash); // true

# Python — bcrypt
import bcrypt
hashed = bcrypt.hashpw(b'correct horse battery staple', bcrypt.gensalt(12))
bcrypt.checkpw(b'correct horse battery staple', hashed)  # True

# PHP — password_hash (emits $2y$)
$hash = password_hash('correct horse battery staple', PASSWORD_BCRYPT, ['cost' => 12]);
password_verify('correct horse battery staple', $hash); // true

# Apache htpasswd CLI — bcrypt entry to stdout (-B bcrypt, -b inline, -n stdout)
htpasswd -Bbn admin 'correct horse battery staple'
# -> admin:$2y$12$dUSFKqT1FCMYZ6hcQfsxuONizEqcX8IGK8snfVSowP5Uu.TDJoPUq

주요 기능

Bcrypt 해시 생성

어떤 비밀번호든 새로운 무작위 솔트와 함께 표준 60자 bcrypt 해시를 생성합니다. 클릭할 때마다 실제 비밀번호 저장소가 그러하듯 서로 다른 유효한 해시가 만들어집니다.

조절 가능한 비용 인자

작업 인자를 4부터 15까지 조정하세요(12가 오늘날의 기본값). 각 단계가 계산 시간을 대략 두 배로 늘리는 것을 체감하며, 강력하면서도 로그인에 충분히 빠른 비용을 선택할 수 있습니다.

버전 접두사 선택

$2b$(현재 bcryptjs 표준), $2y$(PHP / Apache htpasswd), $2a$(원본) 중에서 출력하세요. 모두 라이브러리 간 검증에서 서로 호환됩니다.

해시에 대한 비밀번호 검증

저장된 해시와 후보 비밀번호를 붙여 넣으면 일치 여부를 즉시 확인합니다 — 복호화하지 않고 포함된 솔트와 비용으로 다시 해시합니다. 실패한 로그인 디버깅에 이상적입니다.

해시 구조 분석

어떤 bcrypt 해시든 버전·비용·솔트·다이제스트로 분리해 보여주므로, $2b$12$... 문자열의 구조를 한눈에 알 수 있습니다.

100% 클라이언트 측 실행

모든 해싱과 검증이 브라우저 안에서 로컬로 이루어집니다. 비밀번호나 해시는 절대 서버로 전송되지 않으므로, 실제 자격 증명도 비공개로 다룰 수 있습니다.

Bcrypt 생성기 예시

bcrypt 해시 (비용 12, $2b$)

password: correct horse battery staple
cost: 12
prefix: $2b$
$2b$12$dUSFKqT1FCMYZ6hcQfsxuONizEqcX8IGK8snfVSowP5Uu.TDJoPUq

$2b$ 접두사로 비용 12에서 생성한 bcrypt 해시입니다. 솔트가 무작위이므로 같은 비밀번호라도 매번 다른 해시가 만들어지지만, 그 모든 해시는 원래 비밀번호에 대해 검증됩니다.

비밀번호를 해시에 대해 검증하기

password: correct horse battery staple
hash: $2b$12$dUSFKqT1FCMYZ6hcQfsxuONizEqcX8IGK8snfVSowP5Uu.TDJoPUq
✓ Match — the password is correct for this hash

검증은 해시를 복호화하지 않습니다. bcrypt는 저장된 해시에 포함된 솔트와 비용을 사용해 후보 비밀번호를 다시 해시한 뒤 그 결과를 비교합니다. 일치하면 비밀번호가 올바른 것입니다.

해시 구조 분석

$2b$12$dUSFKqT1FCMYZ6hcQfsxuONizEqcX8IGK8snfVSowP5Uu.TDJoPUq
version: $2b$ · cost: 12 · salt: dUSFKqT1FCMYZ6hcQfsxuO · digest: NizEqcX8IGK8snfVSowP5Uu.TDJoPUq

모든 bcrypt 해시는 자기 기술적입니다. 버전 태그, 두 자리 비용, 22자 Base64 솔트, 31자 Base64 다이제스트가 하나의 60자 문자열에 모두 담겨 있습니다. 이 도구는 이를 분리해 한눈에 읽을 수 있게 보여줍니다.

Bcrypt 생성기 사용법

  1. 1

    비밀번호 입력 및 비용 선택

    생성 탭에서 비밀번호를 입력하거나 무작위 비밀번호를 클릭하세요. 비용 인자(4~15, 12가 오늘날의 기본값)와 버전 접두사 — $2b$, $2a$, $2y$ — 를 사용 환경에 맞게 선택합니다.

  2. 2

    해시 생성

    bcrypt 해시는 새로운 무작위 솔트와 함께 로컬에서 계산되어 단일 60자 $2b$12$... 문자열로 나타납니다. 복사를 클릭해 가져오거나, 다시 생성해 새로 솔트된 해시를 얻으세요.

  3. 3

    구조 읽기 또는 검증

    구조 패널은 해시를 버전·비용·솔트·다이제스트로 분리합니다. 검증 탭으로 전환해 저장된 해시와 비밀번호를 붙여 넣으면 일치 여부를 즉시 확인할 수 있습니다.

Common Errors

해시를 복호화하려 시도하기

Bcrypt는 단방향이라 복호화가 없습니다. 비밀번호를 확인하려면 다이제스트를 되돌리려 하지 말고 해시에 대해 검증하세요.

✗ 오류
bcrypt.decrypt(hash)  // no such operation
✓ 정상
bcrypt.compare(password, hash)  // returns true / false

비용을 너무 낮게 설정하기

비용 4나 6처럼 낮으면 거의 즉시 해시되는데, 이는 공격자가 유출된 해시를 빠르게 무차별 대입할 수 있게 해줍니다. 12를 기준선으로 사용하세요.

✗ 오류
cost: 4  // far too fast, weak against brute force
✓ 정상
cost: 12  // modern default, resists brute force

같은 해시가 두 번 나올 것이라 기대하기

솔트가 무작위이므로 같은 비밀번호를 다시 해시하면 다른 문자열이 나옵니다. 두 해시의 바이트 일치를 확인하지 말고 검증으로 비교하세요.

✗ 오류
hash(pw) === storedHash  // fails — different salts
✓ 정상
bcrypt.compare(pw, storedHash)  // correct check

일반적인 사용 사례

데이터베이스에 비밀번호 해시 시드하기
관리자 또는 테스트 계정용 bcrypt 해시를 생성해 users 테이블에 직접 삽입하면, 전체 가입 흐름을 먼저 구성하지 않고도 로그인할 수 있습니다.
실패하는 로그인 디버깅
정상적인 비밀번호를 저장된 해시에 대해 검증해 해시 자체가 올바른지 확인함으로써, 인증 코드와 버그를 분리해 낼 수 있습니다.
적절한 비용 인자 선택
여러 비용 수준으로 직접 하드웨어에서 생성해 각각 얼마나 걸리는지 체감한 뒤, 실제 로그인을 늦추지 않으면서 무차별 대입에 견디는 작업 인자를 선택하세요.
htpasswd / Basic Auth 항목 생성
Apache, Docker Registry, Caddy 자격 증명용 $2y$ bcrypt 해시를 생성한 뒤, HTTP Basic Auth를 위한 user:hash 줄에 넣으세요.
테스트 픽스처 구축
비밀번호별로 결정적인 bcrypt 해시를 만들어, 실제 인증 서버를 띄우지 않고도 로그인 또는 비밀번호 재설정 흐름의 통합 테스트를 시드하세요.
발견한 해시 감사하기
설정 파일이나 덤프에 있는 bcrypt 문자열의 구조를 읽어 비용 인자를 확인하고, 예상한 비밀번호에 대해 검증해 일치를 확인하세요.

기술 세부 정보

Blowfish 기반, 적응형 비용
Bcrypt는 Blowfish 암호의 비싼 키 설정에서 해시를 유도하며, 이를 2^비용 번 반복합니다. 비용을 1 올리면 작업량이 두 배가 되어, 하드웨어가 발전해도 함수가 무차별 대입에 대해 계속 느리게 유지됩니다.
128비트 무작위 솔트
각 해시는 16바이트(128비트) 무작위 솔트를 포함하며, 비용 다음에 22자로 Base64 인코딩됩니다. 솔트는 모든 해시를 고유하게 만들어, 동일한 비밀번호라도 다이제스트를 공유하지 않고 레인보우 테이블이 통하지 않게 합니다.
자기 기술적인 60자 형식
출력은 $버전$비용$솔트+다이제스트 — 검증에 필요한 모든 것을 담은 고정 60자 문자열입니다. 별도의 솔트 열이나 매개변수 저장소가 필요하지 않습니다.
72바이트 비밀번호 제한
Bcrypt는 비밀번호의 처음 72바이트만 해시하며, 그 이후는 조용히 무시됩니다. 매우 긴 패스프레이즈의 경우 bcrypt 전에 미리 해시(예: SHA-256)하는 것이 흔한 완화책입니다.
복호화가 아니라 검증
Bcrypt는 단방향입니다. 검증은 저장된 해시에서 파싱한 솔트와 비용을 사용해 후보 비밀번호에 대해 해시를 다시 실행한 뒤, 다이제스트를 상수 시간으로 비교합니다. 평문을 복구하는 연산은 존재하지 않습니다.
정직성 참고 및 주의사항
해시는 로컬에서 계산되며 실제 시스템과 대조되지 않습니다. 복사한 해시와 입력한 모든 비밀번호는 클립보드와 브라우저 메모리에 남으므로 — 비밀로 취급하고, 운영 환경에 붙여 넣은 뒤에는 클립보드를 비우세요.

모범 사례

비용 12 이상 사용
비용 12는 오늘날의 기준선입니다. 로그인 지연이 허용 범위에 머무는 한 민감한 시스템에서는 14까지 올리세요. 주기적으로 재평가하세요 — 5년 전에 충분히 느렸던 것이 오늘은 공격하기 저렴합니다.
평문을 절대 저장하거나 로깅하지 않기
원래 비밀번호가 아니라 bcrypt 해시만 저장하고, 비밀번호를 로그와 오류 메시지에서 배제하세요. 평문이 함께 유출되면 bcrypt의 가치는 모두 사라집니다.
솔트는 bcrypt에 맡기기
Bcrypt가 안전한 무작위 솔트를 생성해 포함시켜 줍니다. 직접 만든 고정 솔트를 제공하거나 재사용하지 마세요 — 해시마다의 무작위 솔트가 바로 레인보우 테이블을 무력화하는 요소입니다.
72바이트 제한 유의
긴 패스프레이즈를 허용한다면 bcrypt가 72바이트 이후를 무시한다는 점을 기억하세요. 매우 긴 입력을 완전히 다뤄야 한다면 SHA-256으로 미리 해시하거나 Argon2id를 검토하세요.

Bcrypt 생성기 FAQ

온라인 bcrypt 생성기를 사용해도 안전한가요?
이 도구라면 안전합니다 — 입력한 어떤 내용도 브라우저를 벗어나지 않기 때문입니다. 비밀번호, 생성된 해시, 검증 과정이 모두 사용자 기기의 JavaScript 안에서 로컬로 실행됩니다. 네트워크 요청도, 로깅도, 저장도 없습니다. 해시를 생성하는 동안 브라우저 개발자 도구(F12 → 네트워크 탭)를 열어 외부로 나가는 요청이 전혀 없음을 직접 확인하거나, 인터넷 연결을 끊은 채로도 도구가 계속 작동하는지 보면 됩니다. 이는 비밀번호를 서버로 POST 전송하는 의심스러운 생성기와 정반대입니다. 다만 그냥 실험해 보는 경우라면 실제 운영용 비밀번호 대신 일회용 테스트 비밀번호를 쓰는 습관을 들이세요.
온라인으로 bcrypt 해시를 어떻게 생성하나요?
생성 탭을 열고 비밀번호를 입력하거나(무작위 비밀번호를 클릭해 강력한 비밀번호를 만들 수도 있습니다), 비용 인자를 선택하고 — 12가 오늘날의 기본값입니다 — 버전 접두사를 고릅니다. 대부분의 최신 스택에는 $2b$, PHP와 Apache에는 $2y$, 원래 식별자에는 $2a$를 사용합니다. bcrypt 해시는 새로운 무작위 솔트와 함께 브라우저에서 즉시 계산되어, 한 번의 클릭으로 복사할 수 있는 단일 60자 $2b$12$... 문자열로 나타납니다. 업로드되는 것은 아무것도 없습니다. 비밀번호와 해시는 사용자 기기를 절대 벗어나지 않습니다. 각 해시가 서로 다른 무작위 솔트를 담으므로, 같은 비밀번호에 대한 또 다른 유효한 해시를 얻으려면 언제든 다시 생성하세요.
bcrypt 해시를 복호화하거나 되돌릴 수 있나요?
아니요. bcrypt는 암호화가 아니라 단방향 비밀번호 해싱 함수이므로, 키도 없고 해시를 원래 비밀번호로 되돌리는 복호화 연산도 없습니다. 해시에서 비밀번호를 알아내는 유일한 방법은 후보를 추측해 일치할 때까지 하나씩 해시해 보는 것뿐인데 — bcrypt의 조절 가능한 비용 인자는 바로 이 과정을 느리고 비싸게 만들도록 설계되었습니다. 그래서 해시를 복호화하는 대신 비밀번호를 해시에 대해 검증하는 것입니다. 이 도구는 해시에 저장된 솔트와 비용으로 후보를 다시 해시한 뒤 결과가 동일한지 확인합니다.
어떤 비용 인자(작업 인자)를 사용해야 하나요?
비용 12는 오늘날의 기본값이며 보안과 속도의 합리적인 균형점입니다. 비용은 로그 형태의 작업 인자입니다. 1씩 증가할 때마다 내부 라운드 수가 두 배가 되므로, 비용 13은 비용 12보다 계산 및 검증에 대략 두 배의 시간이 걸리고, 비용 11은 절반의 시간이 걸립니다. 높은 비용은 유출된 해시를 무차별 대입하는 공격자를 늦추지만, 정상적인 모든 로그인에도 지연을 더하므로 실제 하드웨어에서 인증이 느리게 느껴지는 수준 이상으로는 올리지 마세요. 비용 10은 위험이 낮은 엔드포인트에 적합하고, 12~14는 민감한 용도에 알맞습니다. 유효 범위는 4부터 31까지이며, 이 도구에서는 4부터 15까지 선택할 수 있습니다.
$2a$, $2b$, $2y$의 차이는 무엇인가요?
이들은 동일한 bcrypt 알고리즘의 버전 접두사이며, 그 차이는 일부 구현이 문자열 길이와 상위 비트 문자를 처리하던 방식의 과거 버그 수정에서 비롯됩니다. $2a$는 원래 널리 쓰이던 식별자이고, $2b$는 bcryptjs 라이브러리와 대부분의 최신 구현이 출력하는 수정된 현재 버전이며, $2y$는 PHP와 Apache htpasswd가 사용하는 식별자입니다. 검증 측면에서는 서로 호환됩니다 — 여기서 어떤 접두사로 생성한 해시든 모든 라이브러리에서 올바르게 검증되는데, 이들이 모두 같은 핵심 함수를 실행하기 때문입니다. 바이트 단위 호환성이 필요하다면 사용 환경이 요구하는 접두사를 선택하세요.
bcrypt 해시에 대해 비밀번호를 어떻게 검증하나요?
검증 탭으로 전환해 저장된 bcrypt 해시(전체 $2b$12$... 문자열)와 후보 비밀번호를 붙여 넣으면, 도구가 즉시 일치 여부를 알려줍니다. 작동 방식은 해시에 포함된 솔트와 비용을 추출하고 그 정확한 매개변수로 후보 비밀번호를 다시 해시한 뒤, 새 다이제스트를 저장된 것과 비교하는 것입니다 — 복호화는 전혀 일어나지 않습니다. 이것이 로그인 시스템이 비밀번호를 확인하는 방식입니다. 평문을 복구하는 것이 아니라, 제출된 비밀번호를 다시 해시했을 때 저장된 해시가 재현되는지만 확인합니다.
bcrypt vs Argon2 vs scrypt — 무엇을 써야 하나요?
세 가지 모두 의도적으로 느린, 솔트가 적용된 비밀번호 해싱 함수이며, 비밀번호 저장에 있어서는 단순한 SHA-256보다 훨씬 낫습니다. bcrypt는 가장 널리 지원되고 검증된 함수로, 간단하게 조절 가능한 비용을 갖습니다. 주된 한계는 72바이트 비밀번호 상한과 CPU 의존적이라는 점입니다. scrypt는 메모리 경도를 추가해 대규모 GPU/ASIC 공격의 비용을 높입니다. Argon2(특히 Argon2id)는 비밀번호 해싱 경진대회와 OWASP가 현재 권장하는 함수로, 시간·메모리·병렬성을 독립적으로 조정합니다. 오늘 새로 선택한다면 Argon2id가 가장 강력한 기본값이지만, bcrypt 역시 훌륭하고 안전한 선택입니다 — 특히 라이브러리 지원이나 상호운용성이 중요한 경우에 그렇습니다. 절충점은 bcrypt vs Argon2 vs scrypt에서 자세히 다룹니다.
왜 bcrypt 해시가 매번 다른가요?
bcrypt가 해시마다 새로운 무작위 솔트를 생성하고, 해싱 전에 그 솔트를 섞어 넣기 때문입니다. 따라서 같은 비밀번호라도 생성 버튼을 누를 때마다 완전히 다른 60자 문자열이 만들어지는데 — 바로 이것이 핵심입니다. 이는 공격자가 레인보우 테이블을 미리 계산하거나 두 사용자가 같은 비밀번호를 쓴다는 사실을 알아채는 것을 막습니다. 솔트는 비밀이 아닙니다. 해시 안(비용 다음의 22자)에 그대로 저장되므로 검증 시 다시 읽어낼 수 있습니다. 해시를 다시 생성하면 같은 비밀번호에 대한 또 다른 유효한 해시를 얻을 뿐이며, 그 모든 해시가 성공적으로 검증됩니다.

JWT 디코더 (JWT Decoder)

보안 도구

무료 JWT 디코더로 JWT 토큰을 온라인에서 즉시 디코딩. 헤더, 페이로드, 서명, 만료, 클레임 확인. 100% 브라우저 기반 — 토큰이 기기를 떠나지 않음. 가입·추적 없음.

JWT 인코더 (JWT Encoder)

보안 도구

무료 온라인 JWT 생성기·인코더. 헤더와 페이로드를 구성하고 HS256, RS256, ES256으로 즉시 서명. 100% 브라우저 기반 — 비밀 키와 개인 키가 기기를 떠나지 않음.

MD5 해시 생성기 · 파일 체크섬 도구

보안 도구

MD5, SHA-256, SHA-1, SHA-512 해시를 온라인에서 무료로 생성합니다. 브라우저에서 텍스트나 파일을 해싱하고 체크섬을 검증하며 결과를 복사할 수 있습니다.

무작위 비밀번호 생성기 (Random Password Generator)

보안 도구

강력한 무작위 비밀번호를 즉시 만드는 무료 온라인 도구. 길이와 문자 종류를 지정해 최대 50개까지 일괄 생성하고 엔트로피 분석을 확인할 수 있습니다.

SHA-1 해시 생성기 (160비트 레거시)

보안 도구

SHA-1 해시를 브라우저에서 무료로 생성합니다. 40자리 16진수 출력, 업로드 없음. Git 지문 조회, 구형 인증서 검사, 마이그레이션 감사용 레거시 도구입니다.

SHA-256 해시 생성기 및 체크섬 도구

보안 도구

SHA-256 해시를 브라우저에서 생성·검증합니다. 64자리 16진수 출력, 파일·텍스트 지원. 가입 불필요, 데이터 미전송.