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>

PHP 강좌