Bcrypt 해시 생성기·검증기

평문에서 원하는 cost factor로 bcrypt 비밀번호 해시를 만들거나, 평문을 기존 bcrypt 해시와 비교해 검증하는 일을 모두 브라우저에서 처리합니다.

도구를 불러오는 중…

Bcrypt 해시 생성기·검증기「해시」와 「검증」을 전환해 평문 비밀번호를 솔트가 들어간 bcrypt 해시로 바꾸거나, 비밀번호가 기존 해시와 일치하는지 확인할 수 있습니다. cost factor를 골라 해시의 계산 속도와 무차별 대입 저항력을 조절하고, 해시마다 새 무작위 솔트가 자동으로 생성됩니다. 모든 계산은 WebAssembly로 빌드된 bcrypt로 로컬에서 이뤄지므로 비밀번호와 해시는 브라우저를 떠나지 않습니다.

Bcrypt 해시 생성기·검증기란?

Bcrypt 해시 생성기·검증기는 bcrypt 비밀번호 해시 함수를 위한 무료 브라우저 내 도구입니다. bcrypt는 수많은 웹 프레임워크가 비밀번호를 안전하게 저장하는 데 쓰는 바로 그 알고리즘입니다. 백엔드 개발자, 보안 엔지니어, 인증을 배우는 사람이 데이터베이스를 채울 샘플 $2b$ 해시를 만들거나, 저장된 해시가 정말 알려진 비밀번호와 일치하는지 확인하거나, cost factor가 작업량을 어떻게 바꾸는지 살펴보는 데 사용합니다. 「해시」 모드에서는 비밀번호와 cost factor(4~31)를 입력하면 16바이트 무작위 솔트가 자동 생성되고, 결과는 알고리즘 버전·cost·솔트·다이제스트를 함께 담은 표준 인코딩 bcrypt 문자열이 됩니다. 「검증」 모드에서는 비밀번호와 기존 bcrypt 해시를 붙여 넣고 「검증」을 누르면 일치 여부를 알려 줍니다. bcrypt는 일부러 느리게 설계돼 있어 cost factor가 높으면 계산에 체감될 정도의 시간이 걸릴 수 있습니다.

Bcrypt 해시 생성기·검증기 사용법

  1. 새 해시를 만들려면 「해시」를, 비밀번호를 기존 해시와 비교하려면 「검증」을 고르세요.
  2. 「해시」 모드에서 보호하려는 평문 비밀번호를 입력하거나 붙여 넣으세요.
  3. cost factor를 설정하세요(10이 흔한 기본값이며, 높을수록 느리고 강합니다).
  4. 「해시 생성」을 누르고 결과가 나타나면 bcrypt 문자열을 복사하세요.
  5. 「검증」 모드에서 비밀번호를 입력하고 bcrypt 해시를 붙여 넣은 뒤 「검증」을 눌러 일치/불일치를 확인하세요.

예시

기본 cost로 비밀번호 해시하기

입력

비밀번호: correct horse battery staple, cost: 10

출력

$2b$10$... (60자 bcrypt 해시; 솔트가 무작위라 매번 달라집니다)

저장된 해시와 비밀번호 검증하기

입력

비밀번호: hunter2, 해시: $2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy

출력

일치

틀린 비밀번호는 검증에 실패

입력

비밀번호: wrongpass, 해시: $2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy

출력

불일치

자주 묻는 질문

제 비밀번호나 해시가 어딘가로 전송되나요?
아니요. 해시와 검증은 WebAssembly로 빌드된 bcrypt를 사용해 전적으로 브라우저 안에서 실행됩니다. 입력한 어떤 것도 서버로 업로드되거나 저장되지 않으므로 도구는 오프라인에서 작동하고 비밀번호는 페이지를 떠나지 않습니다.
cost factor는 얼마로 해야 하나요?
cost factor는 bcrypt가 수행하는 라운드 수를 정하며, 1씩 올라갈 때마다 작업량이 대략 두 배가 됩니다. 웹 앱에서는 10~12가 흔합니다. 값이 높을수록 무차별 대입에 더 강하지만 계산이 오래 걸리므로, 지나치게 큰 값은 브라우저를 잠깐 멈추게 할 수 있습니다.
같은 비밀번호인데도 해시가 매번 바뀌는 이유는 무엇인가요?
해시마다 새 무작위 16바이트 솔트가 생성되어 결과에 함께 담깁니다. 솔트가 다르면 같은 비밀번호라도 다른 해시가 나오는데, 이것이 바로 bcrypt를 안전하게 만드는 점입니다. 검증은 저장된 해시에서 솔트를 다시 읽어 내므로 여전히 성공합니다.
검증에서 제 해시가 유효하지 않다고 나오는 이유는 무엇인가요?
검증은 표준 인코딩 형식의 완전한 bcrypt 해시를 요구합니다. 보통 $2a$, $2b$, $2y$로 시작해 cost와 53자의 솔트+다이제스트가 이어집니다. 문자열 일부가 빠지거나 바뀌면 솔트를 읽지 못해 오류로 표시됩니다.
이 해시를 제 애플리케이션에 바로 써도 되나요?
네. 출력은 일반적인 bcrypt 라이브러리와 호환되는 표준 인코딩 bcrypt 문자열이므로 저장해 두고 서버에서 그에 대해 검증할 수 있습니다. 실제 시스템에서는 비밀번호가 입력되는 곳에서 해시를 만들고, 다른 도구를 거쳐 복사하지 마세요.

관련 도구