hash_hkdf

(PHP 7 >= 7.1.2, PHP 8)

hash_hkdfGera uma derivação de chave HKDF de uma entrada de chave fornecida

Descrição

hash_hkdf(
    string $algo,
    #[\SensitiveParameter] string $key,
    int $length = 0,
    string $info = "",
    string $salt = ""
): string

Parâmetros

algo

Nome do algoritmo de hash selecionado (por exemplo, "sha256"). Para uma lista de algoritmos suportados, veja hash_hmac_algos().

Nota:

Funções de hash não criptográficas não são permitidas.

key

Material de chaveamento de entrada (binário bruto). Não pode estar vazio.

length

Comprimento de saída desejado em bytes. Não pode ser maior que 255 vezes o tamanho da função hash escolhida.

Se length for 0, o comprimento de saída será definido como padrão para o tamanho da função hash escolhida.

info

String de informação específica da aplicação/contexto.

salt

Salt a ser usado na derivação.

Embora opcional, adicionar salt aleatório melhora significativamente a força do HKDF.

Valor Retornado

Retorna uma string contendo uma representação binária bruta da chave derivada (também conhecida como material de chaveamento de saída - OKM).

Erros/Exceções

Lança uma exceção ValueError se key estiver vazio, algo for desconhecido ou não criptográfico, length for menor que 0 ou muito grande (maior que 255 vezes o tamanho da função hash).

Registro de Alterações

Versão Descrição
8.0.0 Agora lança uma exceção ValueError em caso de erro. Anteriormente, false era retornado e uma mensagem E_WARNING era emitida.

Exemplos

Exemplo #1 Exemplo de hash_hkdf()

<?php
// Gera uma chave aleatória e adiciona um salt para fortalecê-la durante a derivação.
$inputKey = random_bytes(32);
$salt = random_bytes(16);

// Deriva um par de chaves separadas, usando a mesma entrada criada acima.
$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)
?>

O exemplo acima produz um par de chaves separadas, adequadas para a criação de uma construção de criptografia seguida de HMAC, usando AES-256 e SHA-256 para criptografia e autenticação, respectivamente.

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 1 note

up
3
landers dot robert at gmail dot com
2 years ago
Make sure the info parameter contains random elements.

From: https://soatok.blog/2021/11/17/understanding-hkdf/
To Top