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.