Gerador de Hash
Calcule hashes MD5, SHA-1, SHA-256 e SHA-512 de qualquer texto instantaneamente.
MD5
128 bits • Rápido mas não seguro para criptografiaO hash aparecerá aqui...SHA-1
160 bits • Obsoleto para segurançaO hash aparecerá aqui...SHA-256
256 bits • Padrão atual, muito seguroO hash aparecerá aqui...SHA-512
512 bits • Máxima segurançaO hash aparecerá aqui...📚 O que são Funções Hash?
Uma função hash é um algoritmo que transforma qualquer quantidade de dados em uma sequência de tamanho fixo (chamada "digest" ou "hash"). É uma operação unidirecional: você pode calcular o hash de qualquer dado, mas não pode reverter o hash para obter o dado original.
Duas características essenciais: pequenas mudanças no input causam mudanças drásticas no output ("efeito avalanche"), e é computacionalmente inviável encontrar dois inputs diferentes que produzam o mesmo hash ("resistência a colisões").
🔧 Diferenças entre Algoritmos
MD5 (128 bits) - ⚠️ Não use para segurança
Rápido mas vulnerável a colisões desde 2004. Use apenas para checksums de arquivos não críticos ou identificadores únicos não relacionados à segurança.
SHA-1 (160 bits) - ⚠️ Obsoleto
Colisões práticas demonstradas em 2017. Ainda usado em Git por compatibilidade, mas não recomendado para novos sistemas.
SHA-256 (256 bits) - ✅ Recomendado
Padrão atual para a maioria das aplicações. Usado em Bitcoin, certificados SSL/TLS, e verificação de integridade. Excelente equilíbrio entre segurança e performance.
SHA-512 (512 bits) - ✅ Máxima segurança
Mais seguro e às vezes mais rápido que SHA-256 em sistemas de 64 bits. Ideal para aplicações que exigem máxima segurança e longevidade.
💼 Casos de Uso Comuns
- Verificação de arquivos: Comparar hash de download com o hash oficial para garantir integridade
- Armazenamento de senhas: Nunca armazene senhas em texto! Use hash + salt (bcrypt, Argon2)
- Blockchain: Bitcoin usa SHA-256 para proof-of-work e links entre blocos
- Assinaturas digitais: Certificados SSL/TLS usam hashes para verificar autenticidade
- Deduplicação: Identificar arquivos duplicados comparando seus hashes
- Cache: Usar hash de dados como chave de cache para busca rápida
❓ Perguntas Frequentes
É possível "descriptografar" um hash?
Não! Hash não é criptografia reversível. A única forma é testar milhões de combinações (força bruta) ou usar tabelas de hashes pré-calculados (rainbow tables).
O que é "salt" e por que é importante?
Salt é um valor aleatório adicionado à senha antes do hash. Isso garante que a mesma senha gere hashes diferentes para cada usuário, protegendo contra rainbow tables.
Por que meu hash é diferente de outros sites?
Diferenças na codificação de caracteres (UTF-8 vs ASCII), quebras de linha (LF vs CRLF), ou espaços invisíveis podem causar hashes diferentes. Esta ferramenta usa UTF-8.
📝 Exemplos de Código
Veja como calcular hashes em diferentes linguagens de programação:
💛 JavaScript (Node.js)
const crypto = require('crypto');
const texto = "Olá, mundo!";
// SHA-256 (recomendado)
const sha256 = crypto.createHash('sha256').update(texto).digest('hex');
console.log(sha256);
// MD5 (apenas para checksums)
const md5 = crypto.createHash('md5').update(texto).digest('hex');
// Usando Web Crypto API (navegadores)
async function sha256Browser(texto) {
const encoder = new TextEncoder();
const data = encoder.encode(texto);
const hash = await crypto.subtle.digest('SHA-256', data);
return Array.from(new Uint8Array(hash))
.map(b => b.toString(16).padStart(2, '0')).join('');
}🐍 Python
import hashlib
texto = "Olá, mundo!"
# SHA-256 (recomendado)
sha256 = hashlib.sha256(texto.encode('utf-8')).hexdigest()
print(sha256)
# MD5, SHA-1, SHA-512
md5 = hashlib.md5(texto.encode('utf-8')).hexdigest()
sha1 = hashlib.sha1(texto.encode('utf-8')).hexdigest()
sha512 = hashlib.sha512(texto.encode('utf-8')).hexdigest()
# Hash de arquivo
def hash_arquivo(caminho):
with open(caminho, 'rb') as f:
return hashlib.sha256(f.read()).hexdigest()🟣 C# (.NET)
using System.Security.Cryptography;
using System.Text;
string texto = "Olá, mundo!";
byte[] bytes = Encoding.UTF8.GetBytes(texto);
// SHA-256 (recomendado)
using var sha256 = SHA256.Create();
byte[] hash = sha256.ComputeHash(bytes);
string hashHex = Convert.ToHexString(hash).ToLower();
// Método auxiliar para qualquer algoritmo
string ComputeHash<T>(string input) where T : HashAlgorithm, new()
{
using var algo = new T();
byte[] hash = algo.ComputeHash(Encoding.UTF8.GetBytes(input));
return Convert.ToHexString(hash).ToLower();
}☕ Java
import java.security.MessageDigest;
import java.nio.charset.StandardCharsets;
String texto = "Olá, mundo!";
// SHA-256 (recomendado)
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest(texto.getBytes(StandardCharsets.UTF_8));
// Converter para hexadecimal
StringBuilder hexString = new StringBuilder();
for (byte b : hash) {
hexString.append(String.format("%02x", b));
}
System.out.println(hexString.toString());🐘 PHP
<?php
$texto = "Olá, mundo!";
// SHA-256 (recomendado)
$sha256 = hash('sha256', $texto);
echo $sha256;
// Outros algoritmos
$md5 = md5($texto);
$sha1 = sha1($texto);
$sha512 = hash('sha512', $texto);
// Hash de arquivo
$hashArquivo = hash_file('sha256', 'arquivo.txt');
// Para senhas, use password_hash (bcrypt)
$senhaHash = password_hash($senha, PASSWORD_DEFAULT);
$valido = password_verify($senha, $senhaHash);
?>