ToolPal
A hand opening a smart home door with digital access panel, conveying security and technology.

Funciones hash criptograficas explicadas - SHA-256, SHA-512 y mas

📷 Joppe Beurskens / Pexels

Funciones hash criptograficas explicadas - SHA-256, SHA-512 y mas

Guia completa sobre funciones hash criptograficas incluyendo SHA-256, SHA-512, MD5 y mas. Aprende sobre propiedades de hash, casos de uso como checksums, hashing de contrasenas, blockchain y firmas digitales.

DPor Daniel Park6 de marzo de 20267 min de lectura

Introduccion: Que son las funciones hash?

Una funcion hash es una funcion matematica que toma una entrada de cualquier tamano y produce una salida de tamano fijo, llamada hash, digest o checksum. Las funciones hash criptograficas anaden propiedades de seguridad que las hacen invaluables para el desarrollo de software, la ciberseguridad, la tecnologia blockchain y la verificacion de integridad de datos.

Las funciones hash estan en todas partes de la informatica moderna. Cada vez que inicias sesion en un sitio web, verificas una descarga de archivo, haces commit de codigo en Git o interactuas con una blockchain, las funciones hash trabajan entre bastidores. Comprender como funcionan y cuando usar diferentes algoritmos es conocimiento esencial para todo desarrollador.

Quieres generar hashes rapidamente? Prueba nuestro generador de hash, que soporta MD5, SHA-1, SHA-256, SHA-384 y SHA-512.

Propiedades fundamentales de las funciones hash criptograficas

Una buena funcion hash criptografica debe tener varias propiedades clave que la distinguen de un simple checksum.

1. Determinista

La misma entrada siempre produce la misma salida. Si aplicas SHA-256 a la cadena "Hello, World!", obtendras el mismo hash cada vez, en cualquier maquina, en cualquier lenguaje de programacion.

Input:  "Hello, World!"
SHA-256: dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f

2. Tamano de salida fijo

Sin importar el tamano de la entrada, la salida siempre tiene la misma longitud:

AlgoritmoTamano (bits)Tamano (car. hex)
MD512832
SHA-116040
SHA-25625664
SHA-38438496
SHA-512512128
SHA-3-25625664
BLAKE3256 (por defecto)64

3. Resistencia a la preimagen

Dado un valor hash, deberia ser computacionalmente imposible encontrar una entrada que lo produzca. Las funciones hash son funciones unidireccionales.

4. Resistencia a la segunda preimagen

Dada una entrada y su hash, deberia ser imposible encontrar otra entrada que produzca el mismo hash.

5. Resistencia a colisiones

Deberia ser imposible encontrar dos entradas diferentes que produzcan el mismo hash.

6. Efecto avalancha

Un pequeno cambio en la entrada debe causar un cambio dramatico en la salida.

Input: "Hello, World!"
SHA-256: dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f

Input: "Hello, World?" (! cambiado a ?)
SHA-256: 4a6e2ef4e4fa0e534f1d1989f453daa87f36e5e4e35b3dcb3d82f22d12654083

Estos dos hashes lucen completamente diferentes a pesar de que las entradas difieren en un solo caracter. Verificalo tu mismo con nuestro generador de hash.

La familia SHA de funciones hash

La familia Secure Hash Algorithm (SHA) es el conjunto de funciones hash criptograficas mas utilizado. Fue desarrollada por la NSA y publicada por NIST.

SHA-1 (Obsoleto)

SHA-1 produce un hash de 160 bits. Fue el estandar durante anos pero ahora se considera roto.

  • Estado: Obsoleto — no usar para nuevas aplicaciones
  • Colision encontrada: Google y CWI Amsterdam en 2017 (ataque SHAttered)
  • Aun en uso: Git usa SHA-1 para IDs de objetos (en transicion a SHA-256)

SHA-256

SHA-256 es la funcion hash mas utilizada hoy. Es parte de la familia SHA-2 y produce un hash de 256 bits.

  • Estado: Seguro y ampliamente recomendado
  • Usado en: Bitcoin, certificados TLS, firma de codigo, verificacion de integridad
  • Salida: 64 caracteres hexadecimales
// JavaScript: Generar hash SHA-256
async function sha256(message) {
  const encoder = new TextEncoder();
  const data = encoder.encode(message);
  const hashBuffer = await crypto.subtle.digest('SHA-256', data);
  const hashArray = Array.from(new Uint8Array(hashBuffer));
  return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
}

const hash = await sha256('Hello, World!');
console.log(hash);
// dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f

SHA-512

SHA-512 produce un hash de 512 bits. En sistemas de 64 bits, es a menudo mas rapido que SHA-256 porque procesa datos en bloques mas grandes.

  • Estado: Seguro
  • Rendimiento: A menudo mas rapido que SHA-256 en sistemas de 64 bits
  • Salida: 128 caracteres hexadecimales

SHA-3 (Keccak)

SHA-3 es el miembro mas reciente de la familia SHA, basado en el algoritmo Keccak. Usa una construccion fundamentalmente diferente (construccion esponja) a SHA-2.

  • Estado: Seguro, estandarizado en 2015
  • Uso: Opcion de respaldo si SHA-2 fuera comprometido alguna vez

MD5: Por que sigue existiendo

MD5 produce un hash de 128 bits y ahora esta criptograficamente roto, pero aun se usa para propositos no relacionados con seguridad.

NO usar MD5 para:

  • Hashing de contrasenas
  • Firmas digitales
  • Cualquier aplicacion critica de seguridad

MD5 es aceptable para:

  • Checksums no criptograficos
  • Almacenamiento direccionable por contenido
  • Deduplicacion
  • Compatibilidad con sistemas heredados

BLAKE3: La alternativa moderna

BLAKE3 ofrece mejoras de rendimiento significativas respecto a SHA-2 y SHA-3 manteniendo fuertes propiedades de seguridad.

Ventajas de BLAKE3:

  • Extremadamente rapido: 4-8x mas rapido que SHA-256 en CPUs modernos
  • Paralelizable: Aprovecha instrucciones SIMD y multiples nucleos
  • Seguro: Basado en BLAKE2 y el cifrado de flujo ChaCha

Casos de uso

1. Integridad de archivos y checksums

Las funciones hash verifican que los archivos no hayan sido corrompidos o manipulados durante la transferencia.

# Generar checksum
sha256sum ubuntu-24.04.iso > checksum.txt

# Verificar checksum
sha256sum -c checksum.txt
# ubuntu-24.04.iso: OK

2. Hashing de contrasenas

Importante: NO uses SHA-256 directo para hashing de contrasenas. Usa una funcion dedicada con salado.

Algoritmos recomendados:

AlgoritmoEstadoCaracteristica clave
Argon2idMejor opcionIntensivo en memoria, resistente a GPU
bcryptProbadoAmpliamente soportado
scryptBuenoIntensivo en memoria
PBKDF2AceptableAprobado por NIST

3. Blockchain y criptomonedas

Bitcoin usa SHA-256 en su mecanismo de consenso Proof-of-Work.

4. Firmas digitales

Las firmas digitales hacen hash del mensaje y firman el hash en lugar del mensaje completo.

5. Almacenamiento direccionable por contenido

Git, IPFS y Docker usan funciones hash para direccionar contenido, proporcionando deduplicacion e inmutabilidad.

6. HMAC

HMAC combina una funcion hash con una clave secreta para proporcionar integridad y autenticacion de datos.

Consideraciones de seguridad

Vulnerabilidades conocidas

AlgoritmoEstadoAtaques conocidos
MD5RotoAtaques de colision, falsificacion practica
SHA-1RotoAtaque de colision SHAttered (2017)
SHA-256SeguroSin ataques practicos conocidos
SHA-512SeguroSin ataques practicos conocidos
SHA-3SeguroSin ataques practicos conocidos
BLAKE3SeguroSin ataques practicos conocidos

Ataques de extension de longitud

SHA-256 y SHA-512 (pero no SHA-3 ni BLAKE3) son vulnerables a ataques de extension de longitud. Solucion: Use HMAC en lugar de funciones hash crudas para autenticacion.

// Vulnerable a ataque de extension de longitud
const token = sha256(secret + message);

// Seguro: Usar HMAC
const token = hmacSha256(secret, message);

Comparacion de rendimiento

AlgoritmoVelocidad (MB/s)Velocidad relativa
MD5aprox. 7001.4x
SHA-1aprox. 5501.1x
SHA-256aprox. 5001.0x (referencia)
SHA-512aprox. 6001.2x (en 64 bits)
SHA-3-256aprox. 4000.8x
BLAKE3aprox. 3000+6.0x+

Conclusion

Las funciones hash criptograficas son bloques fundamentales de la informatica y la seguridad modernas. Comprender las propiedades, fortalezas y casos de uso apropiados de los diferentes algoritmos es esencial para cualquier desarrollador que trabaje con seguridad, integridad de datos o sistemas distribuidos.

Puntos clave:

  1. SHA-256 es la opcion segura por defecto para la mayoria de necesidades de hashing criptografico
  2. Nunca uses MD5 o SHA-1 para propositos de seguridad
  3. Usa hashing de contrasenas dedicado (Argon2id, bcrypt) — nunca funciones hash simples
  4. HMAC protege contra ataques de extension de longitud — usalo para autenticacion
  5. BLAKE3 es el campeon del rendimiento cuando se necesita velocidad
  6. El efecto avalancha es tu aliado — pequenos cambios en la entrada producen hashes completamente diferentes
  7. La resistencia a colisiones importa — elige algoritmos sin colisiones practicas conocidas

Para generar y comparar hashes rapidamente, guarda en favoritos nuestro generador de hash. Soporta MD5, SHA-1, SHA-256, SHA-384 y SHA-512.

Recursos relacionados

Preguntas Frecuentes

D

Sobre el autor

Daniel Park

Senior frontend engineer based in Seoul. Seven years of experience building web applications at Korean SaaS companies, with a focus on developer tooling, web performance, and privacy-first architecture. Open-source contributor to the JavaScript ecosystem and founder of ToolPal.

Saber más

Compartir

XLinkedIn

Publicaciones relacionadas