예시
입력 (비밀번호 + cost)
비밀번호: password cost(rounds): 10
출력 (bcrypt hash)
$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
참고
$2b$ 는 알고리즘 버전, 10 은 cost factor(2^10 = 1024 round). hash 자체에 salt + cost 가 포함돼 있어 검증 시 별도 저장 불필요.
사용법 / 자주 묻는 질문
이런 경우 사용하세요
- 사용자 비밀번호 저장용 hash 생성 (테스트·학습 목적)
- 기존 bcrypt hash 의 cost factor 확인
- 특정 비밀번호가 저장된 hash 와 일치하는지 verify
- cost 값 튜닝 — 서버 응답시간 100ms 정도가 목표
- argon2 · scrypt 와 비교 학습
자주 묻는 질문
- Q.cost factor 는 몇이 적절한가요?
- A.2026년 기준 12 이상 권장. 일반 서버에서 hash 1회에 ~250ms. 모바일은 10도 OK. cost 가 1 올라갈 때마다 시간 2배.
- Q.왜 SHA-256 대신 bcrypt 인가요?
- A.SHA 는 너무 빠릅니다 — GPU 로 초당 수십억 hash 계산 가능. bcrypt 는 의도적으로 느리게(cost factor) 설계됐고 매 hash 마다 새 salt 가 자동 생성됩니다.
- Q.argon2 가 더 좋다고 들었는데?
- A.맞습니다 — 2015년 Password Hashing Competition 우승. memory-hard 라 GPU 공격에도 강함. 새 프로젝트라면 argon2id 권장. 다만 bcrypt 는 거의 모든 언어·DB 에 라이브러리가 있어 호환성↑.
재미있는 사실
bcrypt 는 1999년 USENIX 에서 Niels Provos 와 David Mazières 가 발표한 'A Future-Adaptable Password Scheme' 논문이 출발입니다. '하드웨어가 빨라져도 work factor 만 올리면 살아남는다' 는 핵심 아이디어가 25년이 지난 지금도 그대로 통합니다.
USENIX 1999 — Provos & Mazièresbcrypt 는 Blowfish 의 변형인 'eksblowfish' 를 씁니다 — Expensive Key Setup. 일반 Blowfish 의 키 setup 을 일부러 느리게 만들어, GPU 가 빠른 ALU 가 아니라 4 KB cache 와 메모리 latency 에 발목을 잡히도록 설계됐어요. 이게 SHA 계열보다 GPU/ASIC 공격에 강한 이유입니다.
Wikipedia — bcrypt해시 앞 prefix `$2a$` `$2b$` `$2y$` 는 모두 같은 알고리즘이지만 버전이 달라요. 2011년 PHP 의 bcrypt 구현에서 8-bit char sign-extension 버그가 발견돼 `$2x$`/`$2y$` 분기가 생겼고, 이후 OpenBSD 도 `$2a$` → `$2b$` 로 옮겼습니다. 라이브러리는 verify 시 모든 prefix 를 받아들입니다.
Openwall — bcrypt sign-extension bug
관련 도구
- Base64 인코딩 / 디코딩
텍스트를 Base64로 인코딩하거나 디코딩합니다. 브라우저에서 즉시 실행되며 서버로 데이터가 전송되지 않습니다.
- URL 인코딩 / 디코딩
URL에 사용할 수 있도록 텍스트를 퍼센트 인코딩하거나 인코딩된 URL을 디코딩합니다. 브라우저에서 즉시 실행됩니다.
- UUID / ULID 생성기
UUID v4(랜덤) · UUID v7(시간 순서, RFC 9562) · ULID를 브라우저에서 생성합니다.
- JWT 디코더
JWT(JSON Web Token)의 header와 payload를 디코딩하여 표시합니다. 서명 검증은 수행하지 않으며(공개키 필요), 토큰은 브라우저에서만 처리됩니다.
- JWT 생성기 (HMAC)
HS256/HS384/HS512(HMAC-SHA) 알고리즘으로 서명된 JWT를 생성합니다. payload·secret 모두 브라우저에서만 처리 — Web Crypto API 기반.
- SHA 해시
텍스트의 SHA-1·SHA-256·SHA-384·SHA-512 해시를 계산합니다. 브라우저의 Web Crypto API를 사용하며 데이터가 서버로 전송되지 않습니다.
- Hex 인코딩 / 디코딩
텍스트를 16진수로 인코딩하거나 디코딩합니다. UTF-8을 자동 처리하며 공백을 무시합니다.
- HTML 엔티티 인코딩 / 디코딩
HTML 특수 문자(&, <, >, ", ')를 엔티티로 인코딩하거나, 이름/숫자 엔티티를 텍스트로 디코딩합니다.
- 비밀번호 생성기
암호학적으로 안전한 비밀번호·토큰·랜덤 문자열·패스프레이즈를 생성하고 엔트로피를 표시합니다.
- 진수 변환기
BigInt 기반으로 큰 정수까지 2/8/10/16/36진수 변환. 0b/0o/0x 자동 감지.
- URL 파서
URL을 프로토콜·호스트·경로·쿼리·해시로 분해해 한눈에 보여줍니다 (읽기 전용).
- HMAC 생성기
Web Crypto API로 SHA-1/256/384/512 HMAC을 계산합니다. 서명·검증 키 기반.
- HMAC 검증기
주어진 HMAC 서명이 message + secret 으로 만든 값과 일치하는지 검증합니다. Web Crypto API + constant-time 비교.
- MD5 해시
텍스트의 MD5 해시를 계산합니다. 주의: MD5는 보안용으로 부적합 — 체크섬·레거시 호환에만 사용.
- Punycode (국제화 도메인)
한글·다국어 도메인을 Punycode(xn-- ASCII)로 상호 변환합니다. 브라우저 native URL 사용.
- HTTP 상태 코드
HTTP 상태 코드(1xx-5xx)를 검색·탐색합니다. 설명과 일반 사용 사례 포함.
- User-Agent 파서
User-Agent 문자열을 브라우저·OS·기기·엔진별로 분해합니다.
- 쿠키 파서
Cookie 또는 Set-Cookie 문자열을 표로 분해합니다. percent-encoded 값 복원 + Set-Cookie 속성(Path/Domain/Max-Age/SameSite/HttpOnly/Secure) 인식.
- IP / CIDR 계산기
IPv4 주소와 CIDR로 네트워크 주소·브로드캐스트·호스트 범위·서브넷 마스크·호스트 수를 계산합니다.
- cURL 빌더
URL·method·헤더·본문으로 cURL 명령을 만듭니다. JSON content-type 자동.