PHP / 함수 / password_hash() / 비밀번호 암호화하는 함수
개요
password_hash()는 비밀번호를 암호화해주는 함수입니다. 입력한 값이 암호화된 비밀번호와 맞는지 확인하는 것은 password_verify() 함수로 합니다.
문법
password_hash ( string $password , int $algo [, array $options ] )
$password
암호화할 문자열입니다.
$algo
암호화 알고리즘을 정합니다.
- PASSWORD_DEFAULT : bcrypt 알고리즘을 사용합니다.
- PASSWORD_BCRYPT : CRYPT_BLOWFISH 알고리즘을 사용합니다.
- PASSWORD_ARGON2I : Argon2i hashing 알고리즘을 사용합니다. PHP를 Argon2를 사용할 수 있도록 설치한 경우에 사용 가능합니다.
- PASSWORD_ARGON2ID : Argon2id hashing 알고리즘을 사용합니다. PHP를 Argon2를 사용할 수 있도록 설치한 경우에 사용 가능합니다.
$options
알고리즘을 PASSWORD_BCRYPT로 정했을 때 사용 가능한 옵션은 다음과 같습니다.
- salt (string)
- cost (integer)
알고리즘을 PASSWORD_ARGON2I 또는 PASSWORD_ARGON2ID로 정했을 때 사용 가능한 옵션은 다음과 같습니다.
- memory_cost (integer)
- time_cost (integer)
- threads (integer)
예제 1
문자열 123을 암호화합니다.
<!doctype html> <html lang="ko"> <head> <meta charset="utf-8"> <title>PHP</title> <style> body { font-family: Consolas, monospace; } </style> </head> <body> <h1>password_hash</h1> <?php $password = '123'; $encrypted_password = password_hash( $password, PASSWORD_DEFAULT); echo '<p>password : ' . $password . '<br />encrypted_password ' . $encrypted_password . '</p>'; ?> </body> </html>
예제 2
같은 문자열을 암호화해도, 암호화할 때마다 다른 문자열이 생성됩니다.
<!doctype html> <html lang="ko"> <head> <meta charset="utf-8"> <title>PHP</title> <style> body { font-family: Consolas, monospace; } </style> </head> <body> <h1>password_hash</h1> <?php $password = '123'; $encrypted_password = password_hash( $password, PASSWORD_DEFAULT); echo '<p>password : ' . $password . '<br />encrypted_password ' . $encrypted_password . '</p>'; $encrypted_password = password_hash( $password, PASSWORD_DEFAULT); echo '<p>password : ' . $password . '<br />encrypted_password ' . $encrypted_password . '</p>'; $encrypted_password = password_hash( $password, PASSWORD_DEFAULT); echo '<p>password : ' . $password . '<br />encrypted_password ' . $encrypted_password . '</p>'; ?> </body> </html>