현재 위치: > 최신 기사 목록> password_verify와 password_hash에서 사용하는 암호화 알고리즘의 관계는 무엇입니까?

password_verify와 password_hash에서 사용하는 암호화 알고리즘의 관계는 무엇입니까?

gitbox 2025-09-29

php에서 password_hash ()password_verify () 는 비밀번호 암호화 및 확인의 함수입니다. 그들의 조합은 암호 저장의 보안을 효과적으로 향상시키고 암호 누출 및 균열을 방지 할 수 있습니다. 그러나 많은 개발자들은 여전히 ​​사용하는 암호화 알고리즘과 관계에 대한 질문이 있습니다. 이 기사는 암호화 알고리즘과 그 사이의 관계를 탐색합니다.

1. password_hash () 의 암호화 알고리즘

Password_hash () 함수는 PHP 5.5 이상에서 소개되었으며 사용자의 일반 텍스트 비밀번호를 암호화 된 암호로 변환하는 데 사용됩니다. 최신 해시 알고리즘 (예 : BCrypt )을 사용하고 "소금"을 자동으로 생성 할 수 있습니다. SALT는 동일한 일반 텍스트 암호가 암호화 될 때마다 다른 해시 값을 생성하는 데 사용되는 추가 임의의 데이터입니다.

기본적으로 Password_hash ()는 bcrypt 알고리즘을 사용하고 생성하는 해시 값에는 소금 내용이 포함되어 있으므로 암호를 저장할 때 추가 소금이 필요하지 않습니다. BCrypt 알고리즘 자체는 또한 적응할 수 있습니다. 즉, 무차별 대구 균열에 저항하기위한 비용 계수를 증가시켜 컴퓨팅 강도를 향상시킬 수 있습니다.

샘플 코드 :

 <span><span><span class="hljs-variable">$password</span></span><span> = </span><span><span class="hljs-string">'my_secure_password'</span></span><span>;
</span><span><span class="hljs-variable">$hashedPassword</span></span><span> = </span><span><span class="hljs-title function_ invoke__">password_hash</span></span><span>(</span><span><span class="hljs-variable">$password</span></span><span>, PASSWORD_BCRYPT);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$hashedPassword</span></span><span>;
</span></span>

2. password_verify () 의 역할

password_verify () 함수는 입력 된 암호가 저장된 해시 값과 일치하는지 확인하는 데 사용됩니다. 이 기능은 사용자가 로그인 할 때 데이터베이스에 저장된 암호화 된 암호와 사용자가 입력 한 일반 텍스트 암호를 비교하는 것입니다. password_verify ()는 저장된 해시 값에서 솔트를 자동으로 추출한 다음 동일한 알고리즘을 사용하여 사용자가 입력 한 암호를 암호화합니다.

Password_Verify () 는 해시 값에 지정된 알고리즘에 따라 계산됩니다. 따라서 개발자는 Password_Verify () 에 대한 소금 또는 암호화 알고리즘을 수동으로 전달할 필요가 없으며, 이는 들어오는 해시 값에 따라 확인하는 적절한 방법을 자동으로 선택합니다.

샘플 코드 :

 <span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">password_verify</span></span><span>(</span><span><span class="hljs-variable">$userInputPassword</span></span><span>, </span><span><span class="hljs-variable">$storedHash</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Password is correct!"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Invalid password!"</span></span><span>;
}
</span></span>

3. Password_hash ()Password_Verify () 간의 암호화 알고리즘 관계

password_hash ()password_verify () 의 긴밀한 관계는 암호 처리 및 확인에 동일한 암호화 알고리즘을 사용한다는 것입니다. 구체적으로:

  • 암호 암호화 : Password_hash ()는 지정된 알고리즘 (기본적으로 BCrypt )에 따라 PlainText 암호를 암호화 된 해시 값으로 변환합니다. 해시 값에는 소금 및 알고리즘의 기타 매개 변수 (예 : 작업 요인)가 포함됩니다.

  • 비밀번호 확인 : password_verify ()는 동일한 알고리즘 (예 : bcrypt )을 사용하여 해시 값의 알고리즘 정보와 소금을 읽음으로써 사용자가 입력 한 암호를 암호화 한 다음 저장된 해시 값과 비교합니다.

따라서 Password_Verify ()는 정확히 동일한 알고리즘 및 Password_hash () 를 사용하여 확인해야합니다. 해시 값이 bcrypt를 사용하면 password_verify () 도 자동으로 bcrypt를 사용하여 확인합니다.

4. 암호화 알고리즘의 확장 성

password_hash ()bcrypt 로 기본값을 얻지 만 다른 알고리즘도 지원합니다. PHP 7.2 이후, Password_hash ()는 두 가지 더 강력한 알고리즘 인 Argon2IArgon2ID 도 지원합니다. Argon2는 BCrypt 보다 GPU 전력 균열을 방지 할 수있는 더 나은 기능을 제공하는 최신 해싱 알고리즘입니다.

argon2i를 사용한 코드 예제 :

 <span><span><span class="hljs-variable">$hashedPassword</span></span><span> = </span><span><span class="hljs-title function_ invoke__">password_hash</span></span><span>(</span><span><span class="hljs-variable">$password</span></span><span>, PASSWORD_ARGON2I);
</span></span>

Argon2 알고리즘을 사용하여 암호가 암호화되면 Password_Verify ()는 확인을 위해 해당 알고리즘을 자동으로 식별하고 사용합니다.

5. 요약

password_hash ()password_verify () 는 PHP에서 암호 암호화 및 확인을위한 매우 중요한 두 가지 기능입니다. 암호화 알고리즘은 밀접하게 관련되어 있으며 Password_hash ()는 해시 값을 암호화하고 생성하는 데 사용되며 Password_Verify ()는 해시 값을 기반으로 암호의 정확성을 확인하는 데 사용됩니다. 둘 다 일반적으로 비밀번호 스토리지의 보안을 보장하는 데 함께 사용됩니다. BCrypt 알고리즘은 기본적으로 사용되지만 PHP는 Argon2 와 같은 더 강력한 알고리즘을 지원하며 필요할 때 선택할 수 있습니다.

Password_hash ()Password_Verify () 에서 사용하는 암호화 알고리즘 관계를 이해함으로써 개발자는 보안 비밀번호 저장 및 검증 메커니즘을 더 잘 설계하여 응용 프로그램 보안을 개선 할 수 있습니다.