Bcrypt 해시 생성기이란?
bcrypt 알고리즘으로 안전한 솔트 처리된 패스워드 해시를 생성합니다. 데이터베이스 저장용 패스워드 해시 또는 기존 해시와 평문 대조 검증에 사용할 수 있습니다.
bcrypt는 수많은 운영 환경 인증 시스템 뒤에서 돌아가는 비밀번호 해싱 알고리즘입니다. 해시마다 고유한 무작위 솔트가 박혀 있어 같은 비밀번호도 같은 해시를 만들지 않습니다. 코스트 팩터 4에서 18까지는 한 단계 올릴 때마다 계산량이 두 배로 늘어, 무차별 대입을 거의 멈춰 세우면서 로그인 응답 시간은 무난하게 유지합니다.
사용 방법
- 해시할 패스워드나 문자열을 입력하고, 비용 인수(솔트 라운드)를 4에서 18 사이로 선택하세요.
- 생성 버튼을 클릭하여 Bcrypt 해시를 만드세요. 비용 인수가 높을수록 더 강한 해시가 생성되지만 계산 시간이 길어집니다.
- 생성된 해시를 애플리케이션에 복사하거나, 검증 탭에서 패스워드와 기존 해시를 비교 확인하세요.
사용 시기
- 신규 사용자 비밀번호를 DB에 저장하기 전에 해시 처리할 때.
- 이미 저장된 $2b$ 해시에 맞춰 로그인 흐름을 재현하거나 테스트할 때.
- 실제 서버에서 해시 시간을 재 보고 코스트 팩터를 결정할 때.
결과
백엔드 개발자가 사용자 패스워드를 안전하게 저장해야 했습니다. MySecurePass123을 12 솔트 라운드로 입력하여 얻은 $2b$ 해시 문자열을 PostgreSQL 데이터베이스에 저장했습니다.
자주 묻는 질문
- 운영 환경에서 코스트 팩터는 얼마가 적당한가요?
- 요즘 서버 하드웨어 기준 12가 흔한 하한선이고 14가 점점 표준이 되고 있습니다. 로그인 한 번당 200~500밀리초 정도 걸리도록 잡으세요. 100밀리초 미만이면 너무 약하고, 1초를 넘으면 저사양 기기를 쓰는 사용자가 불편해합니다.
- 같은 비밀번호인데 매번 해시가 다른 이유는?
- bcrypt는 호출할 때마다 16바이트 솔트를 새로 만들어 해시 문자열 안에 그대로 박아 넣습니다. 바로 이게 핵심이라 'letmein'을 비밀번호로 쓰는 두 사용자도 DB에는 전혀 다른 해시로 남고, 유출되어도 레인보우 테이블 하나로 뚫리지 않습니다.
- 비밀번호 길이에 따로 제한이 있나요?
- bcrypt는 72바이트를 넘는 입력을 조용히 잘라냅니다. 더 긴 패스프레이즈를 받으려면 SHA-256으로 먼저 다이제스트를 만든 뒤 bcrypt에 넘기세요. 대부분의 앱은 입력을 64~72자로 제한합니다.
- 다른 bcrypt 라이브러리가 만든 해시도 검증할 수 있나요?
- 가능합니다. $2a$, $2b$, $2y$ 접두사는 PHP, Node, Python, Ruby, Go, Java 구현체 사이에서 모두 호환됩니다. 어디서 만든 해시든 검증 탭에 붙여 넣으면 원래 비밀번호와 매칭됩니다.
- 2026년에도 bcrypt를 써도 될까요, argon2로 갈아타야 할까요?
- 지금은 argon2id가 권장되지만 bcrypt도 여전히 안전하고 어디서나 지원됩니다. 이미 bcrypt를 쓰는 시스템이라면 급하게 이전할 이유는 없습니다. 새 프로젝트라면 처음부터 argon2를 고르는 편이 깔끔합니다.