Bcrypt 해시 🔒 브라우저에서 로컬로 실행 — 아무것도 업로드되지 않습니다.

bcrypt로 비밀번호를 해시하거나 해시와 대조하세요.

 

이 도구에 대해

bcrypt는 일부러 느리게 설계된 비밀번호 해싱 함수이며, 그것이 바로 우리가 원하는 바입니다: 무차별 대입 추측을 비싸게 만듭니다. 코스트 팩터로 하드웨어가 빨라질수록 그 느림을 높일 수 있습니다. Hash 탭으로 비밀번호를 bcrypt 해시로 바꿔 테스트 데이터베이스를 채우고, Verify 탭으로 비밀번호가 이미 가진 해시와 일치하는지 확인하세요.

bcryptjs 라이브러리로 브라우저에서 실행되므로 비밀번호가 서버로 전송되지 않습니다. bcrypt는 비밀번호 저장용이며 되돌릴 수 있는 암호화가 아니라는 점에 유의하세요.

자주 묻는 질문

비밀번호에 SHA-256 대신 bcrypt를 쓰는 이유는 무엇인가요?

SHA-256은 빠릅니다 — 파일 무결성 검사에는 좋지만 비밀번호에는 최악입니다. 공격자가 초당 수십억 번의 시도를 할 수 있기 때문입니다. bcrypt는 의도적으로 느리게 설계되었고 해시마다 무작위 솔트를 포함하므로, 무차별 대입이나 미리 계산된 레인보우 테이블 공격을 비현실적으로 만듭니다.

"cost"(비용) 숫자는 무엇을 의미하나요?

cost는 2의 거듭제곱 형태의 작업 계수입니다. +1씩 증가할 때마다 해시 계산 시간이 대략 두 배가 됩니다. cost 10(기본값)은 수십 밀리초 정도 걸리고, cost 14-15는 몇 초가 걸릴 수 있습니다. 병목이 되지 않는 선에서 서버가 로그인당 감당할 수 있는 가장 높은 cost를 선택하세요.

제 비밀번호가 서버로 전송되나요?

아닙니다. 해싱과 검증은 모두 브라우저 안에서 실행되며, 가능한 경우 Web Worker에서 처리되어 cost 15 해싱을 해도 탭이 멈추지 않습니다. 여기서 입력하는 내용은 전송되거나 어디에도 저장되지 않습니다.

같은 비밀번호인데 bcrypt 해시가 매번 다른 이유는 무엇인가요?

bcrypt는 해시할 때마다 새로운 무작위 솔트를 생성하며, 이 솔트는 출력 문자열 자체에 포함됩니다($2b$10$<솔트><해시>). 이는 의도된 동작이며, 동일한 비밀번호 두 개가 동일한 해시를 만들지 못하게 막는 바로 그 장치입니다.

검증이 "일치하지 않음" 대신 "유효하지 않은 해시 형식"으로 실패한 이유는 무엇인가요?

유효한 bcrypt 해시는 항상 $2a/b/x/y$<cost>$<53자> 패턴과 일치합니다. 붙여넣은 값이 이 패턴과 맞지 않다면(잘림, 잘못된 알고리즘, 불필요한 공백 등) 이는 비밀번호가 틀린 것과는 다른 문제이므로 별도로 알려드립니다.