Como Criar Hashes SHA256 e MD5 em Python Usando hashlib
Como Criar Hashes SHA256 e MD5 em Python Usando hashlib
A geração de hashes criptográficos é fundamental para verificar a integridade de arquivos, validar senhas e identificar dados sem expor seu conteúdo original. Utilizando a biblioteca nativa
hashlib, você pode gerar resumos criptográficos nos algoritmos MD5 e SHA256 para strings de texto ou arquivos completos de forma rápida e sem dependências externas.Python
import hashlib
def gerar_hash_string(texto: str, algoritmo: str = "sha256") -> str:
# Converte a string em bytes utilizando codificação UTF-8
dados_bytes = texto.encode("utf-8")
# Instancia o algoritmo desejado (ex: 'md5' ou 'sha256')
hash_obj = hashlib.new(algoritmo)
hash_obj.update(dados_bytes)
# Retorna a representação hexadecimal do hash
return hash_obj.hexdigest()
def gerar_hash_arquivo(caminho_arquivo: str, algoritmo: str = "sha256") -> str:
hash_obj = hashlib.new(algoritmo)
# Lê o arquivo em blocos binários para otimizar o uso de memória
with open(caminho_arquivo, "rb") as arquivo:
for bloco in iter(lambda: arquivo.read(4096), b""):
hash_obj.update(bloco)
return hash_obj.hexdigest()
# Exemplo prático de uso
if __name__ == "__main__":
mensagem = "MinhaSenhaSegura123"
# Gerando hash de texto
hash_md5 = gerar_hash_string(mensagem, algoritmo="md5")
hash_sha256 = gerar_hash_string(mensagem, algoritmo="sha256")
print(f"MD5 (String): {hash_md5}")
print(f"SHA256 (String): {hash_sha256}")
# Gerando hash de arquivo
# hash_file = gerar_hash_arquivo("documento.pdf", algoritmo="sha256")
# print(f"SHA256 (Arquivo): {hash_file}")
Pontos-chave
- Obrigatoriedade de Bytes (
.encode()): As funções de hash dohashliboperam exclusivamente sobre dados do tipobytes. Tentar passar umastrsem converter via.encode('utf-8')lançará um erro do tipoTypeError. - Leitura Eficiente em Blocos (
chunking): Para arquivos grandes, deve-se sempre utilizar o modo de abertura binário (rb) e realizar a leitura em pedaços de memória (ex: 4096 bytes). Isso evita estourar a memória RAM tentando carregar um arquivo inteiro de uma só vez. - Saída em Hexadecimal (
.hexdigest()): Enquanto.digest()retorna os bytes brutos do hash, o método.hexdigest()entrega uma string formatada em caracteres hexadecimais legíveis, ideal para armazenamento em bancos de dados. - Uso Seguro dos Algoritmos: O MD5 possui vulnerabilidades conhecidas de colisão e não deve ser utilizado para segurança ou senhas, sendo restrito para verificações simples de integridade. Para segurança criptográfica, utilize SHA256 ou algoritmos superiores.

Comentários
Postar um comentário