Questão nº 38
Questão de Tecnologia da Informação · FCC TRT-12 2023 (nº 38)
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);
I
......
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:
Este texto de apoio vale também pra questão nº 37.
- A`byte[] hashBytes = SHA256.GenerateHash(bytes);`
- B`hashBytes = sha256.ComputeHash(bytes);`
- C`byte[] hashBytes = sha256.GenerateHash(bytes);`
- D`hashBytes = SHA256.Hash(bytes);`
- E`byte[] hashBytes = sha256.ComputeHash(bytes);` (alternativa correta)
Resposta comentada
Gabarito Alternativa E
Hashing é um processo que transforma qualquer dado (como uma senha) em uma sequência de caracteres de tamanho fixo, chamada hash. Essa transformação é unidirecional, o que significa que é muito difícil reverter o hash para obter o dado original. O SHA256 é um algoritmo de hashing popular usado para verificar a integridade de dados e armazenar senhas de forma segura, pois ele cria um "resumo" único para cada entrada.
- (A) Incorreta:
SHA256.GenerateHashnão é um método válido para a classeSHA256ou para uma instância dela. A classeSHA256não possui um método estático chamadoGenerateHash. - (B) Incorreta: Embora
sha256.ComputeHash(bytes)seja a chamada de método correta, a declaração do tipobyte[]para a variávelhashBytesestá faltando. A linha deveria serbyte[] hashBytes = .... - (C) Incorreta: A armadilha aqui é o nome do método. Embora use a instância correta (
sha256) e declare o tipo corretamente (byte[]), o métodoGenerateHashnão existe. O método correto para computar o hash éComputeHash. Esta é uma pegadinha comum que troca o nome do método por um similar. - (D) Incorreta:
SHA256.Hash(bytes)é um método estático que existe em versões mais recentes do .NET (a partir do .NET 5), mas ele não se encaixa no contexto do código que cria uma instância deSHA256(sha256.Create()). Além disso, a declaração do tipobyte[]está faltando. - (E) Correta: Esta alternativa preenche a lacuna corretamente.
byte[] hashBytesdeclara uma nova variável do tipo array de bytes.sha256é a instância do algoritmo SHA256 que foi criada.ComputeHash(bytes)é o método correto da instânciasha256que recebe o array de bytes da senha e calcula o hash, retornando-o como um novo array de bytes.
Fonte: FCC TRT-12 2023 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 003). Reproduzida para fins de estudo.