Existem diferentes algoritmos de criptografia, com diferentes aplicações, sendo divididos em três grupos principais, que são simétrica, assimétrica e destrutiva. Ao contrário da criptografia, que exige uma chave, a codificação define apenas uma regra de transformação conhecida. Para guardar a senha do usuário em um campo do tipo texto de uma base de dados, deve-se:
- A)criptografar a senha com Base64 e armazenar no banco de dados;
Errada, porque Base64 é apenas codificação e não criptografia, então a senha continuaria facilmente recuperável.
- B)criptografar a senha com 3DES e armazená-la junto à chave na forma binária;
Errada, porque 3DES é criptografia reversível e, além disso, armazenar a chave junto com o dado anula a proteção.
- C)utilizar criptografia do tipo SHA-256 e armazenar o hash codificado para Base64;
Certa, porque SHA-256 gera um hash irreversível e o Base64 aqui é só para representar o resultado em texto no banco.
- D)trabalhar com algoritmo RSA, criptografando a senha com a chave privada e codificando para armazenagem através da chave pública;
Errada, porque RSA não é indicado para armazenar senha e a lógica de usar chave privada para “criptografar” senha não faz sentido para esse cenário.
- E)com base no certificado digital do servidor, com algoritmo RSA, utilizar a chave pública para criptografar a senha e armazenar o valor criptografado como Base64.
Errada, porque o certificado digital do servidor e a chave pública não resolvem o problema de guardar senha, já que isso continua sendo criptografia reversível.
Gabarito: C
Quando o assunto é senha de usuário, a ideia não é “guardar para ler depois”, e sim proteger contra vazamento. Por isso, o mais adequado é usar uma função de hash, que transforma a senha em um valor irreversível. Se alguém acessar o banco, não consegue voltar da senha original a partir do hash. Na prática, o ideal moderno é usar hash com sal e algoritmos próprios para senhas, mas entre as opções apresentadas a lógica correta é essa: hash, não criptografia reversível. Base64 não é criptografia. Ele só faz uma codificação para representar dados em texto, como se fosse uma “tradução de formato”. Então, pegar a senha e passar por Base64 não protege nada, porque qualquer um reverte facilmente. Já 3DES e RSA são algoritmos de criptografia, isto é, reversíveis com a chave certa, o que não é o modelo ideal para armazenar senha em banco. A alternativa C acerta ao usar SHA-256, que é um algoritmo de hash. Depois, o hash pode ser codificado em Base64 apenas para armazenamento em campo texto, porque Base64 serve para exibir e guardar o resultado em formato textual, não para aumentar a segurança. O ponto central é: a proteção vem do hash, e não do Base64. Em prova, guarde a regra de ouro: senha de usuário em banco deve ser armazenada com hash, preferencialmente com sal e algoritmo apropriado para senhas. Criptografia serve para recuperar o dado depois; hash serve para verificar sem revelar o conteúdo original.