bcrypt 생성기
bcrypt는 password 저장에 여전히 가장 안전한 선택지 중 하나입니다. 의도적으로 느리고, 자체 salt를 만들며, 조정 가능한 cost parameter를 통해 하드웨어 발전에 맞춰 확장됩니다. 이 generator는 plaintext password에서 표준을 따르는 bcrypt hash를 만들어 test user를 seed하거나, 계정을 시스템 간에 옮기거나, users.password column에 저장된 기존 hash와 값을 비교할 수 있게 해줍니다.
bcrypt로 password를 hash하는 방법
-
1
plaintext password 입력
최대 72 bytes입니다. bcrypt는 그 이후를 조용히 잘라냅니다.
-
2
cost factor 선택
여기서는 12가 기본값이고, 10은 더 빠른 레거시 선택, 13이 이 도구의 최강 설정입니다. +1마다 hash 시간이 대략 두 배가 됩니다.
-
3
random salt 생성
cryptographic RNG에서 16 bytes salt를 뽑아 결과 hash string 안에 embedded합니다.
-
4
hash 복사
출력은 `$2b$12$...`처럼 version, cost, salt, digest를 포함하는 self-describing string입니다.
bcrypt hash의 구조
$2b$12$mE2n5YqWjKqT9tXg.OQPoeeHZJ9hdSvOt5wFdRRQwl6yE1vWWY3z6
| | | |
| | salt (22 Base64 chars) digest (31 Base64 chars)
| cost (2 digits, 4-31)
version (2a, 2b, 2y, all bcrypt)
전체 문자열은 60자입니다. VARCHAR(60) 또는 CHAR(60)으로 지정한 column이 표준 schema입니다.
cost factor 권장값
| Cost | hash 1회당 대략 소요 시간 (2024 CPU) | 용도 |
|---|---|---|
| 10 | ~80 ms | 예전 기본값, 아직은 허용 가능 |
| 12 | ~300 ms | 현재 권장 기준값 |
| 13 | ~600 ms | 더 높은 보안이 필요한 앱 |
| 14 | ~1.2 s | 이 도구의 범위 밖 (최대 13) |
증가값 하나마다 work factor가 두 배가 됩니다. 로그인 지연 시간이 500 ms 미만이어야 한다면 10-12에 머무르세요.
Version byte: 2a vs 2b vs 2y
$2a$, 1999년 original specification. 대부분의 library가2ahash를 냅니다.$2b$, crypt_blowfish의 truncation bug를 고친 2014 revision. 새 hash에는 권장됩니다.$2y$, PHP-specific tag이며 기능적으로$2b$와 같습니다.
세 가지는 서로 검증됩니다. hash string 안의 tag만 다릅니다.
bcrypt가 보호하는 것
- Rainbow tables, hash마다 고유한 salt가 precomputed lookup을 무력화합니다.
- GPU/ASIC cracking, Blowfish key schedule은 memory-bound이고 GPU에 불리합니다. Argon2만큼 GPU-hostile하지는 않지만 brute force에는 여전히 느립니다.
- Database leaks, plaintext는 brute force 없이는 hash에서 복구할 수 없습니다.
bcrypt가 보호하지 못하는 것: 약한 password(최소 길이를 두고 breach list와 대조하세요), credential stuffing(두 번째 factor를 사용하세요), phishing.
72-byte limit
bcrypt는 password의 처음 72 bytes만 사용합니다. 더 긴 입력은 조용히 잘리며, 많은 library가 bcrypt에 넣기 전에 SHA-256으로 password를 pre-hash하라고 권장하는 이유도 이것입니다. 현대적 대안(Argon2, scrypt)에는 이런 제한이 없습니다.
자주 묻는 질문
password storage에는 cost ≥ 12라면 안전합니다. OWASP도 여전히 허용 가능한 알고리즘으로 분류합니다. 새 시스템에는 Argon2id가 선호되지만, legacy bcrypt hash 마이그레이션은 낮은 우선순위의 문제입니다.
salt가 hash마다 random으로 생성되기 때문입니다. 검증할 때는 저장된 hash에서 salt를 가져와 제출된 password를 같은 salt로 다시 hash한 뒤 비교합니다.
대부분의 library는 이를 노출하지 않으며, 그럴 만한 이유가 있습니다. 예측 가능한 salt는 목적을 무너뜨립니다. library가 생성한 salt를 쓰는 것이 안전한 경로입니다.
+1마다 hash 시간이 약 두 배가 되므로 cost 13은 cost 10보다 약 8배 오래 걸립니다. 애플리케이션이 정말로 추가 강도를 필요로 하지 않는 한 10-12 범위를 유지하세요.
관련 도구
숫자-문자 암호
퍼즐, 수수께끼, 방탈출 단서에 쓰이는 A=1, B=2 암호(A1Z26)로 숫자를 문자로, 문자를 숫자로 변환하세요.
파일 해시 계산기
붙여 넣은 텍스트나 파일 내용의 MD5, SHA-1, SHA-256, SHA-512 해시를 계산하여 다운로드와 파일 무결성을 확인하세요.
비즈네르 암호 인코더
키워드를 사용해 고전 비즈네르 암호로 메시지를 암호화하고 복호화하세요. 라틴 문자 A-Z를 이동하며 대소문자, 공백, 문장 부호를 보존합니다.
패스프레이즈 생성기
무작위 일반 단어로 기억하기 쉬운 패스프레이즈를 생성합니다. 단어 수, 구분 문자, 대문자화, 뒤에 붙이는 숫자를 조절할 수 있습니다.
Wei → Ether 변환기
Wei를 Ether(ETH)로 부동소수점 반올림 없이 정확하게 변환합니다. 1 ETH = 10^18 Wei.
랜덤 API 키 생성기
서버에서 8~128자의 16진수, base64url, 영숫자 API 키 또는 UUIDv4를 생성합니다.
이 도구는 다른 언어로도 제공됩니다
- Générateur bcrypt [FR]
- Generator bcrypt [ID]
- bcryptジェネレーター [JA]
- Generator bcrypt [PL]
- Gerador de bcrypt [PT]
- ตัวสร้าง bcrypt [TH]
- مولد bcrypt [AR]
- Trình tạo bcrypt [VI]
- bcrypt-generator [NL]
- bcrypt-Generator [DE]
- bcrypt-generator [SV]
- Generador bcrypt [ES]
- bcrypt Generator [EN]
- Generatore bcrypt [IT]
- bcrypt Oluşturucu [TR]
- Генератор bcrypt [RU]
- bcrypt 生成器 [ZH]