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
- 출력 문자열의 길이입니다.
binary
가true
이면 파생 키의 바이트 길이에 해당하고,binary
가false
이면 파생 키 바이트 길이의 두 배에 해당합니다(키의 모든 바이트가 2개의 16진수로 반환됨).0
이 전달되면 제공된 알고리즘의 전체 출력이 사용됩니다. binary
true
로 설정하면 원시 바이너리 데이터를 출력합니다.false
는 소문자 16진수를 출력합니다.
반환 값
binary
가 true
로 설정되어 있는 경우 파생 키의 원시 바이너리 표현이 반환되지 않는 한 파생 키를 포함하는 문자열을 소문자 16진수로 반환합니다.
오류/예외
알고리즘을 알 수 없는 경우, iterations
매개변수가 0
보다 작거나 같거나, length
가 0
보다 작거나 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 문자열을 생성합니다.