PHP / 함수 / password_verify() / password_hash()로 만든 암호화된 문자열이 입력한 비밀번호와 같은지 확인하는 함수
개요
password_verify()는 password_hash()로 암호화한 비밀번호가 사용자가 입력한 값과 같은지 확인하는 함수입니다. 암호화된 문자열을 원래 문자열로 바꾸는 것이 아니고, 단지 같은지 다른지를 비교하여 TRUE 또는 FALSE를 반환합니다.
문법
password_verify ( string $password , string $hash )
- $password : 사용자가 입력한 비밀번호입니다.
- $hash : password_hash()로 암호화된 문자열입니다.
예제
password_hash() 함수로 mypw를 암호화하고 변수 encrypted_password에 저장합니다.
$encrypted_password = password_hash( 'mypw', PASSWORD_DEFAULT );
사용자가 입력한 암호를 변수 password로 받았다고 가정합니다.
$password = '123';
사용자가 입력한 암호 password와 암호화된 문자열 encrypted_password를 비교해서, 같다면 Success, 다르면 Fail을 출력합니다.
if ( password_verify( $password, $encrypted_password ) ) { echo "<h1>Success</h1>"; } else { echo "<h1>Fail</h1>"; }
다음은 사용자가 정확한 암호를 입력했을 때의 결과입니다.
<!doctype html> <html lang="ko"> <head> <meta charset="utf-8"> <title>PHP</title> <style> body { font-family: Consolas, monospace; } </style> </head> <body> <h1>password_verify</h1> <?php $encrypted_password = password_hash( 'mypw', PASSWORD_DEFAULT ); echo '<p>password : mypw<br />encrypted_password ' . $encrypted_password . '</p>'; $password = 'mypw'; if ( password_verify( $password, $encrypted_password ) ) { echo "<h1>Success</h1>"; } else { echo "<h1>Fail</h1>"; } ?> </body> </html>
다음은 사용자가 틀린 암호를 입력했을 때의 결과입니다.
<!doctype html> <html lang="ko"> <head> <meta charset="utf-8"> <title>PHP</title> <style> body { font-family: Consolas, monospace; } </style> </head> <body> <h1>password_verify</h1> <?php $encrypted_password = password_hash( 'mypw', PASSWORD_DEFAULT ); echo '<p>password : mypw<br />encrypted_password ' . $encrypted_password . '</p>'; $password = '123'; if ( password_verify( $password, $encrypted_password ) ) { echo "<h1>Success</h1>"; } else { echo "<h1>Fail</h1>"; } ?> </body> </html>