Password Hashing 미리 정의된 상수

아래 상수는 항상 PHP 코어의 일부로 사용할 수 있습니다.

PASSWORD_BCRYPT (string)
PASSWORD_BCRYPTCRYPT_BLOWFISH 알고리즘을 사용하여 새 암호 해시를 만드는 데 사용됩니다.

이렇게 하면 항상 너비가 항상 60자인 "$2y$" 암호 형식을 사용하는 해시가 생성됩니다.

지원되는 옵션:

  • salt (string) - 비밀번호를 해싱할 때 사용할 솔트를 수동으로 제공합니다. 이것은 솔트가 자동으로 생성되는 것을 무시하고 방지합니다.

    생략하면 해시된 각 암호에 대해 password_hash()에 의해 임의의 솔트가 생성됩니다. 이것은 의도된 작동 모드이며 PHP 7.0.0에서 salt 옵션은 더 이상 사용되지 않습니다.

  • cost (int) - 사용해야 하는 알고리즘 비용을 나타냅니다. 이러한 값의 예는 crypt()페이지에서 찾을 수 있습니다.

    생략하면 기본값 10이 사용됩니다. 이것은 좋은 기준 비용이지만 하드웨어에 따라 증가시키는 것을 고려할 수 있습니다.

PASSWORD_ARGON2I (string)
PASSWORD_ARGON2I는 Argon2i 알고리즘을 사용하여 새 암호 해시를 만드는 데 사용됩니다.

지원되는 옵션:

  • memory_cost (int) - Argon2 해시를 계산하는 데 사용할 수 있는 최대 메모리(바이트)입니다. 기본값은 PASSWORD_ARGON2_DEFAULT_MEMORY_COST입니다.
  • time_cost (int) - Argon2 해시를 계산하는 데 걸리는 최대 시간입니다. 기본값은 PASSWORD_ARGON2_DEFAULT_TIME_COST입니다.
  • threads (int) - Argon2 해시를 계산하는 데 사용할 스레드 수입니다. 기본값은 PASSWORD_ARGON2_DEFAULT_THREADS입니다. libsodium 구현이 아닌 libargon2에서만 사용할 수 있습니다.

PHP 7.2.0부터 사용 가능합니다.

PASSWORD_ARGON2ID (string)
PASSWORD_ARGON2ID는 Argon2id 알고리즘을 사용하여 새 암호 해시를 만드는 데 사용됩니다. PASSWORD_ARGON2I와 동일한 옵션을 지원합니다.

PHP 7.3.0부터 사용 가능합니다.

PASSWORD_ARGON2_DEFAULT_MEMORY_COST (int)
해시 계산을 시도하는 동안 사용될 기본 메모리 양(바이트)입니다.

PHP 7.2.0부터 사용 가능합니다.

PASSWORD_ARGON2_DEFAULT_TIME_COST (int)
해시 계산을 시도하는 데 소요되는 기본 시간입니다.

PHP 7.2.0부터 사용 가능합니다.

PASSWORD_ARGON2_DEFAULT_THREADS (int)
Argon2lib가 사용할 기본 스레드 수입니다. libsodium 구현에서는 사용할 수 없습니다.

PHP 7.2.0부터 사용 가능합니다.

PASSWORD_DEFAULT (mixed)
알고리즘이 제공되지 않은 경우 해싱에 사용할 기본 알고리즘입니다. 이것은 새롭고 강력한 해싱 알고리즘이 지원될 때 최신 PHP 릴리스에서 변경될 수 있습니다.

시간이 지남에 따라 이 상수가 변경될 수 있다는 점은 주목할 가치가 있습니다. 따라서 결과 해시의 길이가 변경될 수 있음을 알고 있어야 합니다. 따라서 PASSWORD_DEFAULT를 사용하는 경우 결과 해시를 60자(권장 너비는 255) 이상 저장할 수 있는 방식으로 저장해야 합니다.

이 상수의 값:

  • PHP 5.5.0 - PASSWORD_BCRYPT

변경 로그

버전 설명
7.4.0 암호 알고리즘 ID(PASSWORD_BCRYPT, PASSWORD_ARGON2I, PASSWORD_ARGON2IDPASSWORD_DEFAULT)의 값은 이제 문자열입니다. 이전에는 int였습니다.