Questão de Algoritmos e Estrutura de Dados — Estrutura de Dados — NC-UFPR 2017
Algoritmos e Estrutura de Dados›Estrutura de Dados
Código
qq292894
Banca
NC-UFPR
Órgão
ITAIPU BINACIONAL
Ano
2017
Nível
Superior
Cargo
Profissional de Nível Superior Jr - Computação ou Informática – Suporte
Funções hash são utilizadas por diversos protocolos de rede e possuem diversas aplicações, entre as quais a verificação de corretude de uma mensagem enviada. Sobre funções hash no contexto de redes, assinale a alternativa correta.
AUma função hash requer mensagens de tamanho fixo.
BNão é necessário recalcular o valor hash de uma dada mensagem para autenticá-la.
CÉ desejável ser computacionalmente viável inverter uma função hash, ou seja, dado um hash h, encontrar uma mensagem m tal que, aplicada na função de hash H, H(m) = h.
DFunções hash não são injetoras.
EUma dada função de hash pode gerar valores de hash de diferentes tamanhos.
Revelar gabarito e comentário▾
GabaritoD — Funções hash não são injetoras.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Funções Hash
Gabarito: letra D. Funções hash não são injetoras, pois mapeiam entradas de tamanho variável para saídas de tamanho fixo, o que inevitavelmente gera colisões. Essa é uma definição fundamental, conforme a literatura clássica:
Uma função de hash aceita uma mensagem de tamanho variável M como entrada e produz um valor de hash de tamanho fixo h = H(M).
A alternativa D é a única correta, enquanto as demais contrariam as propriedades esperadas de funções hash criptográficas.
Alternativa A — ❌ Incorreta
Afirma que a função hash requer mensagens de tamanho fixo. Na verdade, a entrada é de tamanho variável; a saída é que tem tamanho fixo. A definição correta é exatamente o oposto.
Alternativa B — ❌ Incorreta
Diz que não é necessário recalcular o hash para autenticar. Para verificar a integridade, o receptor deve recalcular o hash sobre a mensagem recebida e compará-lo com o hash transmitido. O texto base explica: "O receptor realiza o mesmo cálculo de hash sobre os bits da mensagem e compara esse valor com o valor de hash recebido."
Alternativa C — ❌ Incorreta
Afirma que é desejável ser computacionalmente viável inverter a função (dado h, encontrar m tal que H(m)=h). Na verdade, a propriedade desejada é a resistência à pré-imagem: deve ser inviável encontrar a entrada original a partir do hash. O texto menciona que é "computacionalmente inviável descobrir um objeto de dados que seja mapeado para um resultado de hash pré-especificado".
Alternativa D — ✅ Correta ⟵ GABARITO
"Funções hash não são injetoras." Isso é verdadeiro porque, pelo princípio da casa dos pombos, como o domínio é maior que a imagem (entrada variável, saída fixa), colisões existem. A função não é injetora, embora seja desejável que colisões sejam difíceis de encontrar (resistência à colisão).
Alternativa E — ❌ Incorreta
Afirma que uma mesma função hash pode gerar valores de diferentes tamanhos. Cada função hash produz saída de tamanho fixo (ex.: SHA-256 → 256 bits). O texto diz: "produz um valor de hash de tamanho fixo".
PEGA ESSA DICA!
Lembre-se do mnemônico: hash = H (entrada variável) → h (saída fixa). A letra D sempre cai como "não injetora" porque a banca adora cobrar essa consequência do mapeamento muitos-para-um. Decore as três propriedades: unidirecionalidade (difícil inverter), resistência à colisão (difícil achar duas entradas com mesmo hash) e segunda resistência à pré-imagem (dada uma entrada, difícil achar outra com mesmo hash).