Edumaster Code

Guía rápida: Hashing (sin enredos)

Fundamentos de programación · 25 Feb 2026
← Volver
cover

Esa huella (hash) sirve para verificar, comparar, detectar cambios y (en seguridad) guardar contraseñas bien

Cuando escuchas “hash”, casi siempre se trata de esto:

Hashing = convertir cualquier dato en una “huella digital” de tamaño fijo.

Esa huella (hash) sirve para verificar, comparar, detectar cambios y (en seguridad) guardar contraseñas bien.


1) ¿Qué es un hash en palabras simples?

Tomas un dato:

  • una contraseña: "MiClave123"

  • un archivo

  • un texto

  • una imagen

  • lo que sea…

Y lo pasas por una función hash (por ejemplo SHA-256).

Resultado: una cadena “rara” de longitud fija, tipo:

e3b0c44298fc1c149afbf4c8996fb924...

Lo importante:

  • Si el dato cambia aunque sea una letra, el hash cambia muchísimo.

  • El hash tiene tamaño fijo, aunque el dato sea enorme.


2) Propiedades clave (lo que debes recordar)

Determinista

Mismo input → mismo hash.

Cambio mínimo, cambio total (efecto avalancha)

Si cambias una letra → hash completamente distinto.

 Unidireccional (en teoría)

Desde el hash, no “regresas” al texto original fácilmente.

 Resistencia a colisiones

Idealmente, es muy difícil que dos inputs diferentes den el mismo hash.


3) ¿Para qué se usa hashing?

A) Verificar integridad (archivos)

Ejemplo: descargas un instalador y el sitio te da el SHA-256.
Tú calculas el tuyo y comparas.
Si coinciden → el archivo no fue alterado.

B) Guardar contraseñas (bien hecho)

Nunca deberías guardar contraseñas en texto plano.
Se guardan como hash… pero ojo: con sal (salt) y algoritmos correctos (más abajo).

C) Firmas digitales y seguridad (parte del sistema)

Hashing se usa dentro de:

  • firmas digitales

  • certificados

  • blockchain

  • detección de modificaciones

D) Comparaciones rápidas

Comparar hashes suele ser más rápido que comparar contenido largo.


4) Hashing NO es lo mismo que cifrado

Esto lo confunde mucha audiencia:

 Cifrado (encryption)

  • Tiene ida y vuelta.

  • Si tienes la clave, puedes recuperar el original.

Hashing

  • Es un “resumen/huella”.

  • No se supone que puedas recuperar el original.


5) Hashing NO es lo mismo que encoding

Encoding (Base64) no protege nada, solo cambia formato.

  • Base64 es reversible siempre.

  • Hash no está pensado para ser reversible.


6) Algoritmos hash más comunes (y cuáles evitar)

 Para integridad / uso general:

  • SHA-256

  • SHA-512

 Evitar para seguridad moderna:

  • MD5 (rápido y con colisiones conocidas)

  • SHA-1 (ya no se considera seguro para muchas cosas)

 Para contraseñas (lo correcto):

  • bcrypt

  • scrypt

  • Argon2 (muy recomendado hoy)

Por qué? Porque son lentos a propósito y frenan ataques de fuerza bruta.


7) El truco que mucha audiencia olvida: SALT (sal)

Si tú haces hash directo de contraseñas:

hash("123456")

muchas personas tendrán el mismo hash si usan la misma contraseña.
Y existen tablas (rainbow tables) para adivinar hashes comunes.

Por eso se usa salt:

hash(salt + password)

Cada usuario tiene un salt distinto.
Así, aunque dos usuarios tengan “123456”, sus hashes quedan diferentes.


8) Ejemplo mental rápido (sin código)

Si el archivo foto.png tiene hash:

A1B2C3...

y alguien le cambia 1 píxel, su hash pasa a:

F9E8D7...

Por eso hashing es tan eficiente para detectar cambios.


9) Errores típicos de estudiantes (y cómo evitarlos)

❌ “Guardar contraseñas con SHA-256 y ya”

No. Para contraseñas usa bcrypt/scrypt/Argon2 + salt.

❌ “Si tengo el hash, puedo sacar la contraseña”

No directamente. Lo que se hace es:

  • probar miles de contraseñas → hashearlas → comparar hashes (ataque de fuerza bruta)

❌ “MD5 sirve porque es rápido”

Precisamente por rápido es peligroso en contraseñas.