DevToolPal
한국어

Bcrypt 해시 생성 및 검증

선택한 비용으로 비밀번호를 bcrypt 해시로 만들거나, 비밀번호가 bcrypt 해시와 일치하는지 확인합니다.

로컬에서 실행, 업로드 없음

옵션

모드

비밀번호

결과

결과가 여기에 표시됩니다

기능

bcrypt는 일부러 느리게 설계된 비밀번호 해시 함수입니다. MD5나 SHA-256은 초당 수십억 번 계산할 수 있지만, bcrypt는 비용을 조절할 수 있어 데이터베이스를 훔친 공격자가 추측할 때마다 큰 비용을 치르게 합니다. Argon2, scrypt와 함께 지금도 비밀번호 저장에 가장 널리 쓰이는 방식 중 하나입니다.

이 도구는 두 가지를 합니다:

  • 해시 생성: 선택한 비용과 버전 접두사로 비밀번호를 bcrypt 해시로 바꿉니다.
  • 검증: 데이터베이스나 프레임워크 시드 파일에 있는 것 같은 기존 bcrypt 해시와 비밀번호가 일치하는지 확인합니다.

사용 방법

  1. 비밀번호를 입력하거나 예시를 클릭합니다.
  2. 해시 생성 모드에서는 비용과 버전을 고릅니다. 해시가 바로 나타나며, 새 솔트를 누르면 다른 해시를 얻습니다.
  3. 검증 모드에서는 확인할 bcrypt 해시를 붙여 넣습니다. 비밀번호가 일치하는지 결과가 표시됩니다.

bcrypt 해시 읽는 법

$2b$10$./3kakECWB0QfIgYzIqciuv449HNnwGbgExtJQQwQ1MofonthOdoK 같은 해시는 네 부분으로 이루어집니다: 버전 2b, 비용 10(2¹⁰번의 키 설정 라운드), 22자 솔트, 31자 체크섬입니다. 나중에 서버가 비밀번호를 검증하는 데 필요한 모든 정보가 이 문자열 하나에 들어 있으므로 해시만 저장하면 됩니다.

알아 둘 제한

bcrypt는 비밀번호의 앞 72바이트만 읽습니다. 그보다 긴 비밀번호나 비ASCII 문자(UTF-8에서 한 글자에 2~4바이트)가 많은 비밀번호는 조용히 잘립니다. 이런 경우 도구가 경고합니다. 아주 긴 암호 문구를 받아야 한다면 먼저 해시하거나 Argon2id를 고려하세요.

자주 묻는 질문

› 같은 비밀번호인데 왜 매번 다른 해시가 나오나요?

해시마다 새로운 16바이트 무작위 솔트를 사용하며, 솔트는 해시 문자열 안에 저장됩니다. 같은 비밀번호가 같은 해시가 되지 않도록 한 의도된 동작입니다. 비밀번호를 확인할 때는 해시 문자열을 비교하지 말고 검증을 사용하세요.

› 비용은 얼마로 해야 하나요?

로그인마다 서버가 감당할 수 있는 가장 높은 비용을 고르세요. 요즘은 보통 10~12입니다. 1씩 올릴 때마다 작업량이 두 배가 됩니다. 운영 하드웨어에서 측정해 해시 한 번에 100~300ms 정도를 목표로 하는 경우가 많습니다.

› $2a$, $2b$, $2y$의 차이는 무엇인가요?

알고리즘은 같습니다. $2b$는 OpenBSD의 현재 접두사, $2y$는 PHP password_hash가 쓰는 접두사, $2a$는 예전 접두사입니다. 대부분의 라이브러리는 세 가지를 모두 받아들이므로 시스템이 요구하는 것을 고르면 됩니다.

› 비밀번호가 어딘가로 전송되나요?

아니요. 해시 생성과 검증은 브라우저에서 실행됩니다. 비밀번호와 확인할 해시는 이 페이지의 메모리에만 있으며 저장되거나 공유 링크에 포함되지 않습니다.