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 범위를 유지하세요.
관련 도구
Base64 파일 인코더
모든 파일(PDF, ZIP, 이미지, 실행 파일)을 Base64 텍스트로 인코딩해 JSON, 이메일, YAML, data URI에 삽입하세요. 브라우저에서 로컬로 실행되며 업로드가 없습니다.
Base58 인코더 및 디코더
UTF-8 텍스트나 16진수 바이트를 인코딩하고 Bitcoin, Ripple, Flickr 알파벳으로 Base58을 안전하게 디코딩하세요.
A1Z26 암호 인코더
A1Z26 암호(A=1, B=2, ... Z=26)로 텍스트를 인코딩하거나 숫자열을 다시 글자로 디코딩합니다. 구분자도 사용자 지정할 수 있습니다.
AES 암호화 / 복호화
OpenSSL의 AES cipher로 낮은 위험의 텍스트를 암호화하고 복호화합니다. passphrase는 SHA-256으로 해시되며 Base64 출력은 IV와 암호문을 담습니다.
체크섬 검증기
텍스트의 MD5, SHA-1, SHA-256, SHA-384, SHA-512 또는 CRC32 체크섬을 계산하고 기대값과 비교해 일치 여부를 명확하게 확인하세요.
암호 식별기
암호문을 붙여 넣으면 Base64, hex, 이진수, 모스, 시저 또는 치환, JWT, 일반적인 해시 등 가능성이 높은 인코딩/암호 방식을 제안합니다.
이 도구는 다른 언어로도 제공됩니다
- bcrypt Oluşturucu [TR]
- Generador bcrypt [ES]
- مولد bcrypt [AR]
- Générateur bcrypt [FR]
- bcrypt-generator [NL]
- Generator bcrypt [ID]
- bcrypt Generator [EN]
- Trình tạo bcrypt [VI]
- bcrypt 生成器 [ZH]
- bcryptジェネレーター [JA]
- ตัวสร้าง bcrypt [TH]
- Gerador de bcrypt [PT]
- bcrypt-Generator [DE]
- bcrypt-generator [SV]
- Generator bcrypt [PL]
- Generatore bcrypt [IT]
- Генератор bcrypt [RU]