무료 변환기

암호화폐 비밀번호 발전기

브라우저에서 즉시 안전한 bcrypt 비밀번호 해시를 생성하세요. 비용 요소와 클라이언트측 해시 비밀번호를 선택하세요. 완전히 비공개이며 무료입니다.

이 도구에 대하여

bcrypt는 1999년 Niels Provos와 David Mazières가 설계한 비밀번호 해싱 기능으로, Blowfish 암호에서 파생되었습니다. SHA-256과 같은 범용 해시 기능과 달리 bcrypt는 의도적으로 느리며 비용 매개변수를 통해 구성 가능하게 느립니다. 이는 정확히 비밀번호 해셔에 필요한 속성입니다. 더 빠른 해시 기능을 사용하면 공격자가 초당 더 많은 후보를 무차별 대입할 수 있습니다. 느린 것은 그들을 제한합니다.

bcrypt는 또한 비밀번호별 솔트를 자동으로 통합하여 미리 계산된 레인보우 테이블을 기반으로 하는 전체 공격 클래스를 제거합니다. 솔트 및 비용 매개변수는 bcrypt 출력의 일부로 저장되므로 확인에는 저장된 해시와 후보 비밀번호만 필요하며 별도의 솔트 관리는 필요하지 않습니다. 이러한 속도 저하, 솔트 및 자체 포함 형식의 조합으로 인해 bcrypt는 20년 동안 기본 비밀번호 해시였으며 오늘날에도 강력한 선택이 되었습니다.

현대적인 대안이 존재합니다. Argon2는 2015년 비밀번호 해싱 대회에서 우승했으며 시간 경도 외에 메모리 경도도 제공합니다. scrypt는 유사한 속성을 제공합니다. 새로운 디자인의 경우 Argon2id를 선택하는 것이 좋습니다. bcrypt는 특히 Argon2를 사용할 수 없는 환경에서 수용 가능하며 널리 배포됩니다.

bcrypt로 비밀번호를 해시하는 이유

비밀번호를 일반 텍스트로 저장하는 것은 잘못된 행위입니다. SHA-256과 같은 빠른 해시로 저장하는 것이 더 나을 수 없습니다. 최신 GPU는 초당 수십억 개의 SHA-256 해시를 계산하므로 몇 시간 내에 일반적인 비밀번호에 대한 무차별 대입 공격이 가능합니다. bcrypt의 고의적인 느린 속도는 경제성을 변화시킵니다. 비용 요소가 12인 경우 공격자는 후보 비밀번호당 약 250ms를 소비하므로 모든 중요 비밀번호에 대해 무차별 대입 공격을 실행하는 것은 불가능합니다.

bcrypt의 자동 비밀번호별 솔트는 레인보우 테이블 공격도 물리칩니다. 동일한 비밀번호를 사용하는 두 명의 사용자는 소금이 다르기 때문에 서로 다른 bcrypt 해시를 생성합니다. 비밀번호 데이터베이스가 손상되더라도 공격자는 일반적인 비밀번호나 미리 계산된 테이블 적중을 빠르게 식별할 수 없습니다.

사용 방법

비밀번호를 입력하고 비용을 선택한 후 해시를 가져옵니다.

  1. 비밀번호를 입력하세요: 해시할 비밀번호를 입력하세요. 이 도구는 브라우저에서 완전히 실행됩니다. 비밀번호는 어디에도 전송되지 않습니다.
  2. 비용 요소 선택: 기본값은 10이며 최신 하드웨어에서 약 100ms의 해싱 시간을 생성합니다. 새로운 애플리케이션(250ms)에는 12가 권장됩니다. 값이 높을수록 확인 속도가 느려지지만 보안이 강화됩니다.
  3. 생성하다: 해시는 임의의 16바이트 솔트를 생성하고, bcrypt 키 파생을 실행하고, 표준 $2b$ 형식으로 해시를 생성합니다.
  4. 해시를 사용하세요: 전체 출력($2b$cost$saltAndHash)을 비밀번호 데이터베이스에 저장하세요. 검증에서는 동일한 라이브러리를 사용하여 후보를 저장된 해시와 비교합니다.

일반적인 사용 사례

기술적인 세부사항

bcrypt는 수정된 Blowfish 암호의 키 설정 단계를 2^cost 횟수만큼 반복하여 사용합니다. 비용 요소는 대수적입니다. 즉, 비용 12는 비용 11보다 2배 느리고 비용 10보다 4배 느립니다. 이러한 로그 확장을 통해 관리자는 시스템을 재설계하지 않고도 하드웨어가 향상됨에 따라 시간이 지남에 따라 비용을 늘릴 수 있습니다.

출력 형식은 $version$cost$saltAndHash입니다. 여기서 saltAndHash는 사용자 정의 알파벳으로 base64로 인코딩됩니다. 버전은 일반적으로 $2b$(랩어라운드 버그가 수정된 최신 변형) 또는 $2y$(PHP 관련, 이에 상응하는 버전)입니다. 솔트는 16바이트입니다. 해시는 24바이트입니다. 함께 53자의 custom-base64로 인코딩됩니다.

최대 입력 길이는 72바이트입니다(Blowfish 키 길이 제한). 더 긴 비밀번호는 자동으로 잘립니다. 이는 오랫동안 지속되어 온 bcrypt 문제입니다. 모범 사례는 암호 길이를 72바이트로 제한하거나 SHA-256으로 사전 해시하여 bcrypt 전에 길이를 정규화하는 것입니다.

모범 사례

자주 묻는 질문

생성된 출력을 사용자 정의할 수 있나요?
예. 이 도구는 특정 요구 사항에 맞게 출력을 조정할 수 있는 다양한 사용자 정의 옵션을 제공합니다. 생성하기 전에 설정을 조정하거나 다른 옵션으로 재생성하세요.
생성된 콘텐츠는 무료로 사용할 수 있나요?
예. 이 도구를 사용하여 생성한 모든 항목은 제한이나 저작자 표시 요구 사항 없이 개인, 교육 또는 상업적 목적으로 사용할 수 있습니다.
계정이 필요합니까?
아니요. 이 도구는 가입이나 이메일, 등록 없이 즉시 사용할 수 있습니다. 페이지를 열고 생성을 시작하세요.
내 입력 데이터는 비공개로 유지되나요?
예. 모든 처리는 귀하의 브라우저에서 이루어집니다. 입력 데이터와 생성된 출력은 외부 서버로 전송되지 않습니다.
소금을 직접 넣어야 하나요?
아니요. bcrypt는 자동으로 임의의 솔트를 생성하고 저장합니다. 자신의 소금을 추가하는 것은 불필요하며 미묘한 버그가 발생할 수 있습니다. 라이브러리의 기본 솔트 생성을 사용합니다.
비밀번호가 서버로 전송되나요?
아니요. bcrypt 해싱은 브라우저에서 발생합니다. 비밀번호는 기기 외부로 유출되지 않습니다.
$2a$, $2b$, $2y$ 변형이 있는 이유는 무엇입니까?
$2a$가 원본입니다. $2b$는 2014년에 발견된 랩어라운드 버그를 수정합니다. $2y$는 PHP 전용이며 기능적으로 $2b$와 동일합니다. 새로운 시스템은 $2b$ 해시를 생성해야 합니다.
높은 비용의 해시를 더 낮은 비용으로 다운그레이드할 수 있나요?
아니요. 해시에는 출력의 일부로 비용이 포함되며 확인에는 동일한 비용이 필요합니다. 비용을 변경하려면 다음 번 로그인 성공 시 다시 해시하세요.