>  기사  >  백엔드 개발  >  Bcrypt는 무작위 솔트로 해시된 비밀번호를 어떻게 확인합니까?

Bcrypt는 무작위 솔트로 해시된 비밀번호를 어떻게 확인합니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-20 17:08:29383검색

How Does Bcrypt Verify Hashed Passwords with Random Salts?

Bcrypt 및 무작위로 생성된 솔트 이해

비밀번호를 안전하게 해싱하기 위한 업계 표준 알고리즘인 Bcrypt는 무작위 솔트를 사용하여 비밀번호 보호를 강화합니다. . 그러나 사용자는 무작위로 보이는 이 요소를 고려하면서 확인 프로세스가 어떻게 작동하는지 궁금해할 수 있습니다.

솔트의 역할

솔트는 이전에 비밀번호에 추가된 고유한 접두사 역할을 합니다. 해싱. 이 무작위 값은 각 비밀번호가 동일하더라도 고유한 해시를 생성하도록 보장합니다. 예측할 수 없는 솔트를 사용하면 공격자가 비밀번호 해시를 미리 계산할 수 없으므로 사용자 계정을 손상시키기가 훨씬 더 어려워집니다.

해시된 비밀번호의 구조

솔트는 무작위로 생성됩니다. , 결과로 생성되는 해시된 비밀번호에 포함됩니다. 해시된 비밀번호는 다음을 포함한 여러 부분으로 구성됩니다.

  • 알고리즘 유형(이 경우 bcrypt)
  • 비용 매개변수(해싱의 계산 강도 결정)
  • 임의 salt
  • 해시된 비밀번호

검증 과정

비밀번호 검증 시 해시된 비밀번호가 bcrypt 알고리즘에 제공됩니다. 알고리즘은 솔트 부분을 추출하고 이를 사용하여 제공된 비밀번호를 해시합니다.

이 프로세스는 기본적으로 해시된 비밀번호를 생성한 초기 해싱 작업을 반영합니다. 새로 생성된 해시가 저장된 해시와 일치하면 제공된 비밀번호가 올바른 것으로 확인됩니다.

비밀번호 "password"에 대해 생성된 해시 비밀번호를 고려하세요.

y$abcdefg...123456789...
  • $2y는 bcrypt 알고리즘을 나타냅니다
  • 10은 비용 매개변수입니다
  • abcdefg...는 소금입니다
  • 123456789... 해시된 비밀번호입니다

"비밀번호"가 올바른지 확인하려면 다음을 사용합니다.

crypt("password", "y$abcdefg...123456789...")

이 작업의 결과는 다음과 같은 경우 원래 생성된 해시와 동일합니다. "비밀번호"가 맞습니다. 해시된 비밀번호 안에 솔트가 포함되어 있어 원래의 해싱 연산을 재현할 수 있기 때문입니다.

위 내용은 Bcrypt는 무작위 솔트로 해시된 비밀번호를 어떻게 확인합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.