Criptografias e Hashes
Criptografia: É um processo que envolve a codificação de informações para que apenas pessoas autorizadas possam acessá-las. Isso inclui criptografia simétrica (onde a mesma chave é usada para criptografar e descriptografar os dados) e criptografia assimétrica (onde são usadas duas chaves distintas: uma pública e uma privada).
Hashing: É um processo que transforma dados de entrada em uma sequência de caracteres de comprimento fixo, geralmente chamada de "hash". Uma função de hash deve ser determinística, ou seja, a mesma entrada sempre produzirá a mesma saída, e também deve ser computacionalmente eficiente. No entanto, ao contrário da criptografia, as funções de hash não são reversíveis, o que significa que não é possível recuperar os dados originais a partir do hash.
Propósitos: Enquanto a criptografia é usada para proteger a confidencialidade dos dados, as hashes são frequentemente usadas para verificar a integridade dos dados. Por exemplo, em segurança de senhas, as hashes são usadas para armazenar senhas de forma segura, e ao fazer login, a senha fornecida pelo usuário é hashada e comparada com o hash armazenado. Se os hashes coincidirem, a senha é considerada correta.
Existem vários tipos de funções de hash, cada uma com suas próprias características e usos específicos. Aqui estão alguns dos tipos mais comuns:
MD5 (Message Digest Algorithm 5): Criado em 1991, o MD5 produz um hash de 128 bits (16 bytes). Apesar de ter sido amplamente utilizado no passado, ele é considerado fraco para aplicações de segurança devido a vulnerabilidades encontradas que permitem colisões de hash.
SHA-1 (Secure Hash Algorithm 1): Desenvolvido pela NSA, o SHA-1 produz um hash de 160 bits (20 bytes). Assim como o MD5, o SHA-1 também é considerado fraco para aplicações de segurança devido a vulnerabilidades encontradas que permitem colisões de hash.
SHA-2 (Secure Hash Algorithm 2): É uma família de funções de hash que inclui SHA-224, SHA-256, SHA-384 e SHA-512, produzindo hashes de diferentes tamanhos (224, 256, 384 e 512 bits, respectivamente). O SHA-256 é amplamente utilizado atualmente e é considerado seguro para a maioria das aplicações.
SHA-3 (Secure Hash Algorithm 3): Desenvolvido como um substituto para o SHA-2, o SHA-3 produz hashes de 224, 256, 384 ou 512 bits, semelhante ao SHA-2. Ele foi selecionado por meio de um concurso público liderado pelo NIST e foi projetado para fornecer uma alternativa à família SHA-2.
BLAKE2: É uma função de hash mais recente que oferece alto desempenho e segurança. Ele produz hashes de 128 ou 256 bits e é projetado para ser mais rápido do que muitas outras funções de hash, mantendo uma segurança forte.
Whirlpool: É uma função de hash criptográfico projetada pela equipe de Vincent Rijmen e Paulo S. L. M. Barreto, que produz um hash de 512 bits. É uma das funções de hash mais seguras disponíveis e é utilizado em aplicações que requerem alto nível de segurança.