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배보다 클 수 없습니다.

length0이면 출력 길이는 기본적으로 선택한 해시 함수 크기로 설정됩니다.

info
애플리케이션/컨텍스트별 정보 문자열입니다.
salt
파생 중에 사용할 Salt입니다.

선택 사항이지만 임의의 salt을 추가하면 HKDF의 강도가 크게 향상됩니다.


반환 값

파생 키의 원시 이진 표현을 포함하는 문자열을 반환합니다(출력 키 자료 - OKM이라고도 함). 또는 실패 시 false.


오류/예외

key가 비어 있고 algo이 알려지지 않았거나 암호화되지 않았거나 length0보다 작거나 너무 큰 경우(해시 함수 크기의 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 암호화 구성 생성에 적합한 별도의 키 쌍을 생성합니다.


기타