암호화 · 해시
BCrypt 해시 계산
입력한 문자열의 BCrypt 해시값을 브라우저에서 계산합니다. 입력 내용은 서버로 전송되지 않습니다.
| 문자열 | |
|---|---|
| 라운드 수 |
※해시값은 웹 브라우저에서 계산됩니다. 입력한 문자열과 계산된 해시값 모두 서버로 전송되지 않습니다.
Tips
- BCrypt은 솔트를 자동으로 부여하기 때문에 같은 문자열이라도 해시화할 때마다 다른 값이 생성됩니다.
- 라운드 수(코스트 팩터)를 늘리면 계산 비용이 높아져 무차별 대입 공격에 대한 저항성이 향상됩니다. 일반적으로 10〜12가 권장값입니다.
- PHP에서는
password_hash($password, PASSWORD_BCRYPT), Ruby에서는bcrypt-rubygem으로 동등한 해시를 생성할 수 있습니다. - 해시값 앞의
$2y$는 알고리즘 식별자이며, 그 뒤의 숫자가 라운드 수를 나타냅니다. - 더 최신인 Argon2(PHP 7.2 이상 지원)도 비밀번호 저장에 적합한 알고리즘으로 검토해보세요.
여담 ― 비밀번호와 해시의 공방 ― 왜 BCrypt가 선택되는가
2012년 LinkedIn 유출 사건에서는 약 650만 건의 비밀번호가 솔트 없는 SHA-1만으로 저장되어 있었고, 레인보우 테이블 공격으로 수일 만에 대부분이 해독되었습니다. 이 사건은 비밀번호 저장 설계에 큰 경종을 울렸습니다.
현대의 고성능 GPU(NVIDIA RTX 4090)는 MD5를 매초 약 680억 회 계산할 수 있습니다. BCrypt는 의도적으로 계산 비용을 높게 설계하여, 라운드 수 12 설정에서는 매초 수천 회 수준으로 억제되기 때문에 무차별 대입 공격에 대한 저항성이 훨씬 높습니다. 같은 계산 능력이라도 MD5라면 초당 680억 회 시도할 수 있는 반면, BCrypt는 수천 회밖에 시도할 수 없습니다. 이 차이가 중요합니다.
BCrypt는 원래 1999년 OpenBSD용으로 설계된 알고리즘입니다. 20년 이상이 지난 지금도 현역으로 사용되고 있으며, 새로운 Argon2(PHP 7.2 이상 지원)와 함께 비밀번호 저장의 표준적인 선택지가 되어 있습니다.