hash_pbkdf2

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

hash_pbkdf2 — 제공된 암호의 PBKDF2 키 파생 생성


설명

hash_pbkdf2(
    string $algo,
    string $password,
    string $salt,
    int $iterations,
    int $length = 0,
    bool $binary = false
): string
                

매개변수

algo
선택한 해싱 알고리즘의 이름(예: md5, sha256, haval160,4 등) 지원되는 알고리즘 목록은 hash_algos()를 참조하십시오.
password
파생에 사용할 비밀번호입니다.
salt
파생에 사용할 salt입니다. 이 값은 무작위로 생성되어야 합니다.
iterations
파생에 대해 수행할 내부 반복 횟수입니다.
length
출력 문자열의 길이입니다. binarytrue이면 파생 키의 바이트 길이에 해당하고, binaryfalse이면 파생 키 바이트 길이의 두 배에 해당합니다(키의 모든 바이트가 2개의 16진수로 반환됨).

0이 전달되면 제공된 알고리즘의 전체 출력이 사용됩니다.

binary
true로 설정하면 원시 바이너리 데이터를 출력합니다. false는 소문자 16진수를 출력합니다.

반환 값

binarytrue로 설정되어 있는 경우 파생 키의 원시 바이너리 표현이 반환되지 않는 한 파생 키를 포함하는 문자열을 소문자 16진수로 반환합니다.


오류/예외

알고리즘을 알 수 없는 경우, iterations 매개변수가 0보다 작거나 같거나, length0보다 작거나 salt가 너무 긴 경우(INT_MAX - 4보다 큼) E_WARNING이 발생합니다.


변경 로그

버전 설명
7.2.0 비암호화 해시 함수(adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat)의 사용이 비활성화되었습니다.

Examples

예제 #1 hash_pbkdf2() 예제, 기본 사용법

PHP 7.4.0부터 hash_algos()는 다음과 같은 알고리즘 이름 목록을 반환합니다.

                  
<?php
$password = "password";
$iterations = 1000;

// Generate a random IV using openssl_random_pseudo_bytes()
// random_bytes() or another suitable source of randomness
$salt = openssl_random_pseudo_bytes(16);

$hash = hash_pbkdf2("sha256", $password, $salt, $iterations, 20);
var_dump($hash);

// for raw binary, the $length needs to be halved for equivalent results
$hash = hash_pbkdf2("sha256", $password, $salt, $iterations, 10, true);
var_dump(bin2hex($hash));?>
                  
                

위의 예는 다음과 유사한 결과를 출력합니다.

string(20) "120fb6cffcf8b32c43e7"
string(20) "120fb6cffcf8b32c43e7"
                

노트

주의 PBKDF2 메서드는 저장을 위한 암호 해싱에 사용할 수 있습니다. 그러나 CRYPT_BLOWFISH가 있는 password_hash() 또는 crypt()가 암호 저장에 더 적합하다는 점에 유의해야 합니다.


기타

  • crypt() - 단방향 문자열 해싱
  • password_hash() - 비밀번호 해시 생성
  • hash() - 해시 값 생성(메시지 다이제스트)
  • hash_algos() - 록된 해싱 알고리즘 목록 반환
  • hash_init() - 증분 해시 컨텍스트 초기화
  • hash_hmac() - HMAC 메서드를 사용하여 키 해시 값 생성
  • hash_hmac_file() - HMAC 메서드와 주어진 파일의 내용을 사용하여 키가 있는 해시 값 생성
  • openssl_pbkdf2() - PKCS5 v2 PBKDF2 문자열을 생성합니다.