Calcular hash MD5 a partir de una cadena en C#
-
Usando el Algoritmo
MD5
enC#
-
Utilice la biblioteca
System.Security.Cryptography
para calcular el hash MD5 a partir de una cadenaC#
Los algoritmos hash
son algoritmos matemáticos que se utilizan para asignar datos de entrada arbitrarios a un hash de tamaño fijo. Se utilizan para múltiples propósitos, como almacenar datos en estructuras de datos como maps hash
, verificación de contraseña
, digestión de mensajes
y seguridad de criptomonedas
.
El MD5
pertenece a la clase de digestión de mensajes de los algoritmos hash. Rivest desarrolló MD5
y otros algoritmos como MD2
, MD4
, etc.
El algoritmo se diseñó originalmente para autenticar firmas digitales. Pero más tarde, se descubrieron muchas vulnerabilidades que llevaron a su desaprobación.
Sin embargo, todavía se usa para verificar la integridad de los datos y constituye una base para comprender algoritmos avanzados. El algoritmo MD5
, como todos los algoritmos de digestión de mensajes, toma como entrada un mensaje de longitud desconocida y lo convierte en un hash de tamaño fijo.
Un cambio menor en la cadena de entrada dará como resultado un hash completamente diferente. Este artículo aprenderá a calcular el hash MD5
usando C#
.
Usando el Algoritmo MD5
en C#
El algoritmo MD5 consta de los siguientes cuatro pasos principales:
Primero, agregue bits de relleno.
En este paso, agregamos bits de relleno para que el número total de bits sea 64
menos que el múltiplo más cercano de 512
. Se hace para que el algoritmo pueda procesar datos del tamaño de 512
bits y el paso 2
, se suma la longitud de la cadena expresada en 64
bits para obtener un múltiplo par de 512
.
En segundo lugar, agregue bits de longitud.
Calcula la longitud de la cadena en 64
bits. Añádalos a la salida formada en el paso 1
.
En tercer lugar, inicialice el búfer MD.
Inicializamos 4
buffers de digestión de mensajes de 32
bits llamados A
, B
, C
y D
. Son los siguientes:
A = 01 23 45 67
B = 89 ab cd ef
C = fe dc ba 98
D = 76 54 32 10
El cuarto es el procesamiento de bloques individuales de 512
bits.
Los bits enteros se dividen en bloques de tamaño 512
. Cada bloque formado se divide en 16
sub-bloques de 32
bits. Todos los bloques 16
formados se pasan a través de una serie de operaciones 4
con los búferes A
, B
, C
y D
para dar el hash final.
Utilice la biblioteca System.Security.Cryptography
para calcular el hash MD5 a partir de una cadena C#
using System;
using System.Security.Cryptography;
using System.Text;
public class Test {
public static string ComputeMd5Hash(string message) {
using (MD5 md5 = MD5.Create()) {
byte[] input = Encoding.ASCII.GetBytes(message);
byte[] hash = md5.ComputeHash(input);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hash.Length; i++) {
sb.Append(hash[i].ToString("X2"));
}
return sb.ToString();
}
}
public static void Main() {
string message = "Welcome to DelfStack";
Console.WriteLine(ComputeMd5Hash(message));
}
}
Producción :
53C62733BB54F2B720A32490E6C447FF
En el programa anterior, creamos un objeto de la clase MD5
presente en C#
que proporciona una implementación preparada del algoritmo md5
a través del método ComputeHash()
.
Convertimos nuestra cadena de mensajes en un byte stream
para que coincida con la firma de la función del método ComputeHash()
, que luego devuelve el resultado en forma de byte stream
. A continuación, utilizamos la clase de creación de cadenas para convertir el flujo de bytes en una cadena C#
válida.
Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.
LinkedIn