O próprio hash não criptografa diretamente dados. Hashing é uma função unidirecional; Você pode hash dados para obter uma saída de tamanho fixo (o hash), mas não pode reverter o processo para recuperar os dados originais. Isso o torna útil para armazenamento de senha (onde você armazena o hash, não a própria senha) e verificações de integridade de dados (para ver se os dados foram adulterados).
A criptografia, por outro lado, é um processo de mão dupla. Você usa uma chave para criptografar dados e a mesma chave (ou relacionada) para descriptografá -los.
Portanto, você não usa hash * para * criptografia. No entanto, o hash desempenha um papel crucial nos esquemas de criptografia * seguros * de várias maneiras:
1.
Derivação de chave: O hash é freqüentemente usado para derivar chaves de criptografia de uma senha ou uma chave mestre. Isso é crucial porque o armazenamento de teclas de criptografia diretamente é extremamente arriscado. Em vez disso, você pode usar uma forte função de derivação-chave como PBKDF2, ARGON2 ou BCRYPT, que hash repetidamente a chave de senha/mestre com um sal (dados aleatórios) e uma alta iteração para torná-lo computacionalmente caro para a força bruta ou quebrar a chave. Esse processo transforma uma senha relativamente fraca em uma chave forte e criptograficamente segura usada para criptografia.
2.
Códigos de autenticação de mensagem (MACs): Os Macs fornecem integridade e autenticação de dados. Eles combinam uma chave secreta com os dados usando uma função de hash criptográfica (como o HMAC-SHA256). A tag Mac resultante é anexada aos dados criptografados. O destinatário usa a mesma chave e os dados recebidos para calcular o MAC. Se o Mac calculado corresponder ao Mac recebido, prova que os dados não foram adulterados e que veio de alguém que possui a chave secreta.
3.
assinaturas digitais: Embora não sejam estritamente parte do próprio processo de criptografia, as assinaturas digitais usam hash para verificar a autenticidade e a integridade de uma mensagem. O remetente hashes a mensagem e, em seguida, assina o hash usando sua chave privada. O destinatário pode verificar a assinatura usando a chave pública do remetente e reaparecer a mensagem. Isso prova que a mensagem se originou do remetente reivindicada e não foi alterada.
em resumo: Você não hash dados * em vez de criptografá -los. Você usa o hash * em conjunto com * criptografia para aprimorar a segurança:
*
Derivação -chave forte: Converta uma senha ou chave mestre em uma forte chave de criptografia.
*
Macs: Garanta a integridade e a autenticidade dos dados.
*
assinaturas digitais: Verifique a autenticidade e a integridade de uma mensagem (geralmente usada ao lado da criptografia).
Exemplo (conceitual): Digamos que você queira criptografar uma mensagem:
1.
Derivação de chave: Use PBKDF2 para derivar uma forte chave de criptografia da senha de um usuário e um sal.
2.
Criptografia: Criptografar a mensagem usando um algoritmo de criptografia simétrica como o AES com a chave derivada.
3.
geração Mac: Use o HMAC-SHA256 para gerar um Mac usando a mesma chave de criptografia e a mensagem criptografada.
4.
transmissão: Envie a mensagem criptografada e o Mac.
5.
Verificação e descriptografia: O destinatário recebe a mensagem criptografada e o Mac. Eles usam o mesmo processo de derivação -chave (com o mesmo sal e senha) para derivar a chave de criptografia. Eles então descriptografaram a mensagem e geram seu próprio Mac. Se o Mac gerado corresponder ao Mac recebido, a mensagem será considerada autêntica e inalterada.
Lembre-se de usar bibliotecas e algoritmos criptográficos estabelecidos e bem-vindos. Evite implementar sua própria criptografia, a menos que você seja um especialista no campo. A implementação inadequada pode enfraquecer severamente sua segurança.