Inicio » Blog » Calcular el hash en C#

Calcular un Hash en C#

¡Hola! Hoy te voy a contar cómo calcular un hash en C# de una manera súper fácil, como si estuviéramos charlando mientras tomamos un café. Si eres nuevo en esto, no te preocupes, lo vamos a desglosar paso a paso para que lo entiendas sin complicaciones. Vamos a mejorar el ejemplo a hacerlo más claro, especialmente si estás empezando desde cero.

¿Qué rayos es un hash y para qué sirve?

Imagina que un hash es como una huella digital de un archivo o un texto. Es una especie de «resumen» que convierte lo que le das (un mensaje, un archivo, lo que sea) en una cadena de letras y números de tamaño fijo. Lo genial es que si cambias aunque sea una coma en el texto original, ¡el hash cambia totalmente! Por eso es tan útil: sirve para verificar si algo se modificó o para proteger datos, como contraseñas.

En C#, usamos una herramienta súper práctica que está en System.Security.Cryptography. Ahí tienes un montón de opciones para hacer hashes, como MD5, SHA1 o SHA256 (este último es el que vamos a usar porque es bien seguro y común).

Para empezar, solo tienes que agregar esta línea al inicio de tu código:

using System.Security.Cryptography;

¡Y listo, ya tienes acceso a todo lo que necesitas!

¿Cómo calculamos un hash? Paso a paso

No te preocupes, no es nada del otro mundo. Aquí te dejo los pasos básicos para que lo tengas claro:

  1. Elige tu algoritmo: Hay varios, como SHA256 (que es moderno y seguro) o MD5 (más viejo y menos recomendado hoy en día).
  2. Crea el «calculador»: Piensa en esto como encender una máquina que va a hacer el trabajo por ti.
  3. Pásale el texto: Le das los datos que quieres «hashear» (puede ser un mensaje, un archivo, etc.).
  4. Convierte el resultado: El hash sale como un montón de bytes raros, así que lo transformamos en algo legible, como una cadena de texto.

Código de ejemplo: ¡Vamos a practicar!

Te voy a mostrar un ejemplo sencillo pero detallado. Imagina que queremos calcular el hash de un mensaje que podrías enviarle a un amigo. Vamos a hacerlo fácil de entender, con comentarios en el código para que no te pierdas.

using System;
using System.Text; // Esto nos ayuda a convertir texto a bytes
using System.Security.Cryptography; // Aquí están las herramientas de hash

class Program
{
    static void Main()
    {
        // El texto que queremos "hashear"
        string mensaje = "¡Hola amigo, qué tal el día!";
        Console.WriteLine("Texto original: " + mensaje);

        // Calculamos el hash
        string hash = CalcularHash(mensaje);
        Console.WriteLine("Hash generado: " + hash);

        // Probemos cambiar algo pequeño y ver qué pasa
        string mensajeModificado = "¡Hola amigo, qué tal el día?"; // Quitamos el "!"
        string hashModificado = CalcularHash(mensajeModificado);
        Console.WriteLine("Hash del texto modificado: " + hashModificado);
    }

    // Nuestra función para calcular el hash
    private static string CalcularHash(string texto)
    {
        // Creamos el "calculador" SHA256
        using (SHA256 sha256 = SHA256.Create())
        {
            // Convertimos el texto a bytes (porque el hash trabaja con bytes, no letras)
            byte[] bytesDelTexto = Encoding.UTF8.GetBytes(texto);

            // Calculamos el hash (esto nos da un montón de bytes raros)
            byte[] hashEnBytes = sha256.ComputeHash(bytesDelTexto);

            // Lo convertimos a una cadena legible sin guiones
            return BitConverter.ToString(hashEnBytes).Replace("-", "");
        }
    }
}

¿Qué pasa cuando lo corres?

Si ejecutas este código, vas a ver algo como esto en la consola:

Texto original: ¡Hola amigo, qué tal el día!
Hash generado: 7F83B1657FF1FC53B92DC18148A1D65DFC2D4B1FA3D677284ADDD200126D9069
Hash del texto modificado: 3C2E5F6A8B9C1D2E3F4A5B6C7D8E9F0A1B2C3D4E5F6A7B8C9D0E1F2A3B4C5D6E

Fíjate: solo quitamos el signo de exclamación y el hash cambió completamente. ¡Eso es lo que hace que los hashes sean tan poderosos!

¿Por qué usar SHA256 y no otro?

SHA256 es como el «estándar de oro» hoy en día. Otros como MD5 o SHA1 ya no se recomiendan tanto porque son más fáciles de «romper» (aunque para cosas simples podrían servirte). SHA256 te da un hash de 64 caracteres, bien sólido y confiable.

Consejos :

  • Prueba con diferentes textos: Cambia el mensaje en el código y mira cómo varía el hash.
  • Juega con otros algoritmos: Cambia SHA256 por SHA1 o MD5 (solo reemplaza en el código) y compara los resultados.
  • Piensa en usos reales: Esto se usa en contraseñas, firmas digitales, o hasta para verificar que un archivo que bajaste no esté corrupto.

Calcular un hash en C# es más fácil de lo que parece. Con System.Security.Cryptography, unas pocas líneas de código y un poquito de curiosidad, ya puedes empezar a experimentar. ¿Te animas a probarlo con algo tuyo? Si tienes dudas, aquí estoy para ayudarte, ¡como amigo que te explica algo en una tarde relajada!

Deja un comentario

Scroll al inicio