Julgue o item seguinte, a respeito de segurança e criptograf...
Para gerar um código hash em Java, é correto utilizar o método digest da classe java.security.MessageDigest, informando-se como parâmetro, no momento da sua instanciação, o nome do hash a ser gerado, como, por exemplo, o MD5 e o SHA-1.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa Correta: C - certo
A questão aborda o tema da criptografia e a geração de códigos hash no contexto da linguagem de programação Java. Entender essa questão envolve conhecimentos sobre segurança da informação, especificamente sobre funções hash e como elas são implementadas em Java através da classe java.security.MessageDigest.
As funções hash são algoritmos que recebem uma entrada de dados e produzem uma sequência de caracteres de tamanho fixo, independente do tamanho da entrada, conhecida como valor hash ou digest. Esse valor tem a característica de ser único para cada entrada única; ou seja, duas entradas diferentes não devem produzir o mesmo valor hash. Além disso, as funções hash são projetadas de forma que seja inviável reverter o valor hash para obter a entrada original, conferindo assim uma propriedade de segurança à função.
No Java, a classe MessageDigest é utilizada para criar valores hash. Para gerar um valor hash, é necessário instanciar um objeto dessa classe, especificando o nome do algoritmo desejado como parâmetro. Algoritmos comuns utilizados para esse fim incluem MD5 e SHA-1, embora deva-se notar que o MD5 e o SHA-1 não são mais considerados seguros contra todas as formas de ataques e, portanto, usos mais recentes em segurança tendem a preferir algoritmos da família SHA-2 ou SHA-3.
Após instanciar o objeto MessageDigest com o algoritmo desejado, utiliza-se o método digest() para calcular o valor hash dos dados desejados. O método pode receber como entrada um array de bytes, que representa os dados a serem transformados em hash. O resultado obtido é então o valor hash dos dados em formato de array de bytes, que pode ser convertido para uma representação em hexadecimal ou base64, dependendo de como se deseja visualizar ou armazenar o valor hash.
Portanto, a afirmativa está correta, pois descreve de maneira precisa o processo de utilização da classe java.security.MessageDigest para criar um valor hash em Java, incluindo a especificação do algoritmo no momento da instanciação do objeto.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Item correto.
Exemplo de código:
package teste;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class TesteAlgoritmo {
public static void main(String args []) throws NoSuchAlgorithmException,
UnsupportedEncodingException {
String senha = "admin";
MessageDigest algorithm = MessageDigest.getInstance("MD5");
byte messageDigest[] = algorithm.digest(senha.getBytes("UTF-8"));
System.out.println(messageDigest);
}
}
go @head!*
Certo.
Fonte para mais esclarecimentos:
Esta classe MessageDigest fornece aos aplicativos a funcionalidade de um algoritmo de “digerir” mensagens, como SHA-1 ou SHA-256. Digestores de mensagem (message digests) são funções hash unidirecionais seguras que pegam dados de tamanho arbitrário e produzem um valor hash de comprimento fixo.
MessageDigest md = MessageDigest.getInstance("SHA-256");
Toda implementação da classe MessageDigest pode suportar os seguintes algoritmos padrões: MD5, SHA-1, SHA-256.
Certo.
Fonte: https://docs.oracle.com/javase/8/docs/api/index.html?java/security/MessageDigest.html
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo