# Guia de HKDF Extract e Expand SP 800-56C

Mostra cada etapa HMAC de HKDF Extract+Expand para derivação de chaves, incluindo PRK, T(n) e OKM.

> Página canônica: https://elysiatools.com/pt/tools/sp800-56c-hkdf-extract-and-expand-walkthrough

- **Categoria:** Security

- **Palavras-chave:** hkdf, sp 800-56c, rfc 5869, derivação de chave, hmac, ecdh

## Visão geral

Guia determinístico SP 800-56C/RFC 5869 para segredo ECDH, desenvolvimento e vetores de teste, não um serviço de segredos.

## Entradas

- **Predefinição de entrada** (select)
- **Hash** (select)
- **Codificação de entrada** (select)
- **Material de chave de entrada (IKM)** (textarea): Hex, text, or Base64 according to input encoding
- **Sal** (textarea): Optional; empty uses a zero-filled HashLen salt
- **Informação** (textarea): Optional context / protocol label
- **Comprimento de saída (bytes)** (number)

## Quando usar

- Para estudar o fluxo HKDF Extract+Expand conforme SP 800-56C e RFC 5869.
- Para reproduzir o caso de teste 1 do RFC 5869 com SHA-256.
- Para analisar a derivação de chaves a partir de um segredo compartilhado ECDH.

## Como funciona

- Escolha uma predefinição ou informe manualmente o IKM, o salt, a informação e o comprimento da saída.
- Selecione SHA-256, SHA-384 ou SHA-512 e defina a codificação da entrada como hexadecimal, UTF-8 ou Base64.
- A etapa Extract calcula o PRK usando HMAC; se o salt ficar vazio, é usado um salt preenchido com zeros do tamanho do hash.
- A etapa Expand calcula os blocos T(n) até formar o OKM com o comprimento solicitado, mostrando as etapas no resultado.

## Casos de uso

- Validação de implementações HKDF com vetores de teste do RFC 5869.
- Aprendizado visual das operações Extract e Expand em protocolos criptográficos.
- Análise de derivação de chaves para cenários baseados em segredo compartilhado ECDH.

## Perguntas frequentes

### O que é exibido no resultado?

O resultado mostra as etapas HKDF, incluindo o PRK, os blocos T(n) e o OKM.

### Quais funções de hash estão disponíveis?

É possível usar SHA-256, SHA-384 ou SHA-512.

### Quais codificações de entrada são aceitas?

As entradas podem ser informadas em hexadecimal, texto UTF-8 ou Base64.

### O salt é obrigatório?

Não. Quando o salt fica vazio, a ferramenta usa um valor preenchido com zeros do tamanho do hash.

### Qual é o limite do comprimento de saída?

O comprimento deve ser informado em bytes, entre 1 e 4096.

## Ferramentas relacionadas

- [Gerador de par de chaves SSH](https://elysiatools.com/pt/tools/ssh-key-generator): Gera um par de chaves SSH (Ed25519 recomendado, ou RSA 4096, ECDSA P-256) com a chave pública no formato OpenSSH pronta para ~/.ssh/authorized_keys, uma impressão digital SHA256 e uma chave privada PEM. Criptografia opcional com senha. Executa localmente.
- [Gerador de PKCE Code Verifier e Challenge](https://elysiatools.com/pt/tools/pkce-code-verifier-generator): Gera, valida e verifica pares code_verifier / code_challenge PKCE (RFC 7636) de OAuth2 / OIDC. Três modos: (1) gerar um par novo a partir de bytes aleatórios criptográficos (256/384/512/768 bits), (2) auditar um verifier existente frente ao RFC — comprimento (43–128), charset \[A-Za-z0-9-._~\] e ≥256 bits de entropia, e (3) verificar um par recalculando BASE64URL(SHA256(verifier)). Opcionalmente constrói a URL completa de autorização e o corpo de troca de token. Complementa o nonce-generator genérico (que só emite o par) com auditoria de conformidade RFC e verificação de pares.
- [Gerador de códigos TOTP / HOTP offline](https://elysiatools.com/pt/tools/totp-hotp-offline-generator): Gera senhas de uso único TOTP RFC 6238 (6/8 dígitos, 30/60 s) e HOTP RFC 4226 (por contador) a partir de um segredo base32, offline, com HMAC-SHA1/256/512, e exporta uma URI otpauth://
- [Extrator de Colunas de Dados](https://elysiatools.com/pt/tools/data-column-extractor): Extrai colunas específicas de dados tabulares com suporte para vários formatos e seleção flexível de colunas
- [Calculadora de entropia](https://elysiatools.com/pt/tools/entropy-calculator): Mede a aleatoriedade de quaisquer dados — entropia de Shannon (bits/símbolo), min-entropia (esforço de adivinhação no pior caso), tamanho do alfabeto, taxa de duplicatas e um tempo médio de quebra por força bruta a uma taxa de hash escolhida. Classifica como Forte (min-entropia ≥128), Médio (64-127) ou Fraco (<64).
- [Gerador e Verificador HMAC](https://elysiatools.com/pt/tools/hmac-generator-verifier): Calcula uma assinatura HMAC de mensagem + segredo com SHA-1/SHA-2/SHA-3/BLAKE2, ou verifica uma assinatura recebida (comparação em tempo constante), com presets para Stripe / Slack / GitHub
- [Criptografar / Descriptografar RSA](https://elysiatools.com/pt/tools/rsa-encrypt-decrypt): Criptografa texto com uma chave pública RSA ou descriptografa o texto cifrado com a chave privada correspondente, usando padding OAEP (SHA-1 ou SHA-256). Trata mensagens longas em blocos. Chaves e dados ficam locais. PKCS#1 v1.5 não é oferecido (Node o desabilita para descriptografia devido a ataques Bleichenbacher).
- [Extrator de Parâmetros URL](https://elysiatools.com/pt/tools/url-parameter-extractor): Extrair e analisar parâmetros de URLs incluindo strings de consulta, fragmentos hash e segmentos de caminho

## Exemplos

- [Exemplos de Processamento de Imagem Android Java](https://elysiatools.com/pt/samples/android-image-processing-java): Exemplos de processamento de imagem Android Java incluindo leitura/escrita, dimensionamento e conversão de formato
- [Exemplos de Processamento de Imagem Android Kotlin](https://elysiatools.com/pt/samples/android-image-processing-kotlin): Exemplos de processamento de imagem Android Kotlin incluindo leitura/escrita, dimensionamento e conversão de formato
- [Exemplos de Processamento de Imagem Web Python](https://elysiatools.com/pt/samples/web-image-processing-python): Exemplos de processamento de imagem Web Python usando PIL/Pillow incluindo leitura, salvamento, redimensionamento e conversão de formato
- [Exemplos de Processamento de Imagem Web Rust](https://elysiatools.com/pt/samples/web-image-processing-rust): Exemplos de processamento de imagem Web Rust incluindo leitura/gravação, redimensionamento e conversão de formato
