Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FCC 2023

ProgramaçãoLinguagens de programação
Código
fc069490
Banca
FCC
Órgão
TRT - 12ª Região (SC)
Ano
2023
Nível
Superior
Cargo
Analista Judiciário - Área de Apoio Especializado (Especialidade Tecnologia da Informação)

Atenção: Para responder às questões de números 37 e 38, examine o programa C# abaixo.


using System;

using System.Security.Cryptography;

using System.Text;


class Program{

static void Main(){


string senha = "Tribunal Regional do Trabalho 12a região";

string senhaCriptografada = CriptografarSenha(senha) ;


Console.WriteLine($"Senha: (senha)");

Console.WriteLine($"Senha Criptografada: (senhaCriptografada)");

}

static string CriptografarSenha(string senha){


using (SHA256 sha256 = SHA256.Create()) (


byte() bytes = Encoding.UTF8.GetBytes(senha);


StringBuilder builder = new StringBuilder() ;

for (int i = 0; i < hashBytes.Length; i++)

builder.Append(hashBytes[i].ToString("x2")) ;


return builder. ToString() ;

}

}

}

Considerando que o programa C# seja executado em condições ideais, para que a senha criptografada seja gerada e impressa corretamente, a lacuna I deve ser preenchida com:
  1. AhashBytes = sha256.ComputeHash(bytes);
  2. Bbyte[] hashBytes = sha256.GenerateHash(bytes);
  3. ChashBytes = SHA256.Hash(bytes);
  4. Dbyte[] hashBytes = sha256.ComputeHash(bytes);
  5. Ebyte[] hashBytes = SHA256.GenerateHash(bytes);
Revelar gabarito e comentário

GabaritoD — byte[] hashBytes = sha256.ComputeHash(bytes);

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”.

Criptografia com SHA256 em C#

Gabarito: letra D. O método correto da classe SHA256 para computar o hash a partir de um array de bytes é ComputeHash. Além disso, o retorno deve ser armazenado em uma variável do tipo byte[], sendo necessária a declaração explícita. A alternativa D é a única que combina byte[] hashBytes = sha256.ComputeHash(bytes);.

O código apresentado utiliza a classe SHA256 do namespace System.Security.Cryptography. O método Create() retorna uma instância. O método de instância ComputeHash(byte[]) recebe os bytes da senha (obtidos via Encoding.UTF8.GetBytes) e retorna o hash em um array de bytes. No fragmento, a lacuna I aparece antes do loop for que percorre hashBytes.Length, portanto hashBytes deve ser declarado e atribuído.

Alternativa A — ❌ Incorreta

hashBytes = sha256.ComputeHash(bytes); — falta a declaração do tipo byte[], o que gera erro de compilação, pois hashBytes não foi declarado anteriormente.

Alternativa B — ❌ Incorreta

byte[] hashBytes = sha256.GenerateHash(bytes); — o método GenerateHash não existe na classe SHA256 (nem em nenhuma classe hash do .NET). O método correto é ComputeHash.

Alternativa C — ❌ Incorreta

hashBytes = SHA256.Hash(bytes); — SHA256.Hash não é um método estático disponível (há SHA256.HashData a partir do .NET 5, mas a sintaxe é diferente). Além disso, falta declaração byte[] hashBytes. Na versão do framework usada pela banca (provavelmente .NET Framework 4.x ou .NET Core), não existe SHA256.Hash estático.

Alternativa D — ✅ Correta ⟵ GABARITO

byte[] hashBytes = sha256.ComputeHash(bytes); — declaração correta e método correto. ComputeHash é o método de instância que retorna o hash em bytes.

Alternativa E — ❌ Incorreta

byte[] hashBytes = SHA256.GenerateHash(bytes); — mesmo erro da alternativa B (método GenerateHash inexistente), só que invocado estaticamente na classe (não na instância).

Gabarito: letra D.

Link permanente: /questoes/fc069490