hash_hkdf
(PHP 7 >= 7.1.2, PHP 8)
hash_hkdf — 제공된 키 입력의 HKDF 키 파생 생성
설명
hash_hkdf( string $algo, string $key, int $length = 0, string $info = "", string $salt = "" ): string
매개변수
algo
- 선택한 해싱 알고리즘의 이름(예: "sha256", "sha512", "haval160,4" 등). 지원되는 알고리즘 목록은 hash_algos()를 참조하세요.
메모: 비암호화 해시 함수는 허용되지 않습니다.
key
- 입력 키 자료(원시 바이너리). 비워둘 수 없습니다.
length
- 원하는 출력 길이(바이트). 선택한 해시 함수 크기의 255배보다 클 수 없습니다.
length
가0
이면 출력 길이는 기본적으로 선택한 해시 함수 크기로 설정됩니다. info
- 애플리케이션/컨텍스트별 정보 문자열입니다.
salt
- 파생 중에 사용할 Salt입니다.
선택 사항이지만 임의의 salt을 추가하면 HKDF의 강도가 크게 향상됩니다.
반환 값
파생 키의 원시 이진 표현을 포함하는 문자열을 반환합니다(출력 키 자료 - OKM이라고도 함). 또는 실패 시 false
.
오류/예외
key
가 비어 있고 algo
이 알려지지 않았거나 암호화되지 않았거나 length
가 0
보다 작거나 너무 큰 경우(해시 함수 크기의 255배 이상) E_WARNING
이 발생합니다.
Examples
예제 #1 hash_hkdf() 예제
<?php
// Generate a random key, and salt to strengthen it during derivation.
$inputKey = random_bytes(32);
$salt = random_bytes(16);
// Derive a pair of separate keys, using the same input created above.
$encryptionKey = hash_hkdf('sha256', $inputKey, 32, 'aes-256-encryption', $salt);
$authenticationKey = hash_hkdf('sha256', $inputKey, 32, 'sha-256-authentication', $salt);
var_dump($encryptionKey !== $authenticationKey); // bool(true)
?>
위의 예에서는 암호화 및 인증에 각각 AES-256 및 SHA-256을 사용하여 HMAC 암호화 구성 생성에 적합한 별도의 키 쌍을 생성합니다.
기타
- hash_pbkdf2() - 제공된 암호의 PBKDF2 키 파생 생성
- » RFC 5869
- » userland implementation