bcrypt 해시 생성기
비밀번호를 bcrypt($2b$) 해시로 만들고, 반대로 비밀번호가 기존 해시와 일치하는지 확인합니다. 전부 브라우저 안에서 계산합니다.
비밀번호
1 올릴 때마다 계산이 정확히 2배 느려집니다(2^cost번 반복). OWASP 최소 권고는 10입니다. 이 계산기는 브라우저 JavaScript로 직접 계산해 서버보다 훨씬 느리므로 14까지만 받습니다 — 그 이상은 dev/bcrypt-cost로 서버 기준 소요시간을 가늠해 보세요.
반대로 — 비밀번호가 해시와 맞는지 확인
bcrypt는 Blowfish 키 길이 제한 때문에 비밀번호를 처음 72바이트까지만 보고 그 뒤는 통째로 무시합니다. 영문·숫자는 1자=1바이트라 거의 문제없지만, 한글 같은 멀티바이트 문자는 글자 수가 아니라 UTF-8 바이트 수로 세어지므로 훨씬 빨리 한도에 닿습니다.
사용 방법
- 1비밀번호를 넣고 cost(비용계수)를 고릅니다 — 기본값 10은 OWASP 최소 권고치입니다.
- 2해시 생성 버튼을 누르면 매번 새 솔트로 $2b$10$... 형태의 해시가 나옵니다.
- 3반대로 검증하려면 비밀번호와 기존 해시를 넣어 일치 여부를 확인합니다.
자주 묻는 질문
매번 새로 뽑은 16바이트 무작위 솔트를 섞어 계산하기 때문입니다. 같은 비밀번호라도 해시가 달라 레인보우 테이블 공격이 통하지 않고, 해시 자체에 솔트가 들어 있어(`$2b$10$` 뒤 22글자) 검증할 때 다시 넣어줄 필요가 없습니다.
내부 계산을 2^cost번 되풀이하게 만드는 숫자로, 1 올릴 때마다 정확히 2배 느려집니다. OWASP는 10 이상을 권고합니다. 이 계산기는 브라우저에서 순수 JavaScript로 계산해 서버(C 구현)보다 훨씬 느리므로, cost 12를 넘기면 실제로 체감될 만큼 오래 걸릴 수 있습니다 — 실무에서 몇 ms가 걸릴지는 dev/bcrypt-cost 계산기를 참고하세요.
bcrypt는 Blowfish 키 길이 제한 때문에 비밀번호의 첫 72바이트만 보고 그 뒤는 통째로 무시합니다. "abcdef...(72바이트)XYZ" 와 "abcdef...(72바이트)전혀다른뒷부분" 은 같은 해시가 됩니다. 한글 등 멀티바이트 문자는 글자 수가 아니라 UTF-8 바이트 수로 세어지므로 영문보다 훨씬 빨리 한도에 닿습니다.
전송되지 않습니다. 솔트 생성부터 Blowfish 연산까지 전부 이 브라우저 안에서 끝나고, 새로고침하면 사라집니다. 다만 화면에 평문으로 보이므로 공용 PC에서는 실제 비밀번호를 넣지 마세요.
전부 같은 bcrypt 알고리즘이고, 72바이트 초과분 처리 같은 구현 세부사항의 버전 표시입니다. $2b$가 현재 표준(OpenBSD 현재 구현)이라 이 계산기는 항상 $2b$로 생성합니다. $2x$는 PHP crypt_blowfish 5.3.7 이전 버전의 비ASCII 문자 처리 버그가 있는 옛 변형이라 이 계산기는 검증도 지원하지 않습니다.
알아두면 좋은 점
- 전부 브라우저 JavaScript로 직접 구현한 계산입니다(외부 라이브러리·서버 호출 없음). OpenBSD 계열 참조 구현이 낸 공개 테스트 벡터 77개와 결과가 정확히 일치하는 것을 확인했습니다.
- 비밀번호는 UTF-8 바이트 기준 72바이트까지만 사용되고 그 뒤는 잘립니다.
- cost가 클수록 브라우저 탭이 계산하는 동안 멈춘 것처럼 보일 수 있습니다. 실무 서버 성능 추정은 dev/bcrypt-cost 계산기를 쓰세요.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 9일 · 결과는 참고용 추정치입니다.