Colección de citas famosas - Slogan de motivación - Varios métodos de cifrado MD5 y SHA1 en ASP.NET

Varios métodos de cifrado MD5 y SHA1 en ASP.NET

El nombre completo de MD5 es Message-Digest Algorithm 5 (Algoritmo de resumen de mensajes) Fue desarrollado a principios de la década de 1990 por Ronald L. Rivest del Mit Laboratory for Computer Science y Rsa data security inc. fue desarrollado por md2 y md3 Desarrollado a partir de md4. Su función es permitir que la información de gran capacidad se "comprima" en un formato confidencial (es decir, convertir una cadena de bytes de cualquier longitud en un entero grande de cierta longitud) antes de firmar la clave privada con un software de firma digital. Ya sea md2, md4 o md5, todos necesitan obtener una longitud aleatoria de información y generar un resumen de información de 128 bits.

Las funciones hash criptográficas asignan cadenas binarias de longitud arbitraria a pequeñas cadenas binarias de longitud fija. Las funciones hash criptográficas tienen la propiedad de que es computacionalmente imposible encontrar dos entradas diferentes que tengan el mismo valor, es decir, los valores hash de dos conjuntos de datos solo se encontrarán si los datos correspondientes también coinciden. Un pequeño cambio en los datos puede producir una gran cantidad impredecible de cambios en el valor hash. Por lo tanto, le resultará difícil encontrar pistas en el texto cifrado.

El nombre completo de SHA1 es Secure Hash Algorithm (Algoritmo Hash Seguro)

El tamaño del valor hash del algoritmo MD5 es de 128 bits. El tamaño del valor hash del algoritmo SHA1 es de 160 bits. Ambos algoritmos son irreversibles.

Aunque en la Conferencia Internacional de Criptozoología (Crypto'2004) en Santa Bárbara, California, el 17 de agosto de 2004, el profesor Wang Xiaoyun de la Universidad de Shandong en China logró un gran avance al descifrar MD5, HAVAL-128, MD4. y El informe del algoritmo RIPEMD anunció los resultados de los algoritmos de la serie MD. La fortaleza del MD5, que anunciaba el estándar criptográfico mundial inexpugnable, se derrumbó, provocando un gran revuelo en la comunidad criptográfica. Pero creo que este nivel de seguridad de cifrado es suficiente para que podamos crear software normal.

Lo que más utilizamos es cifrar las contraseñas de los usuarios, almacenar las contraseñas cifradas en la base de datos y, al comparar contraseñas, cifrar la contraseña ingresada por el usuario y luego compararla con la contraseña en la base de datos. .texto para comparar. En cuanto a cómo implementar el algoritmo de cifrado en la clase ASP.net, no necesitamos preocuparnos por esto, solo sabemos cómo usarlo.

Los siguientes son varios métodos de cifrado en ASP.NET. Hay dos algoritmos de cifrado, a saber, MD5 y SHA1 mencionados anteriormente. El ejemplo que doy aquí es que MD5 es más o menos el mismo, pero las clases utilizadas son diferentes.

Clases relacionadas con MD5:

El código es el siguiente:

System.Security.Cryptography.MD5

System.Security.Cryptography .MD5CryptoServiceProvider( )

System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSource, "MD5")

Clases relacionadas con SHA1:

El código es el siguiente :

System.Security.Cryptography.SHA1

System.Security.Cryptography.SHA1CryptoServiceProvider()

System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSource, "SHA1")

p>

El método es el siguiente: (usando vs2005)

El código es el siguiente:

/**//// lt; resumengt;

// / Método 1: crear un objeto utilizando el nuevo operador

/// lt;/summarygt; lt; param name="strSource"gt; Texto sin formato que debe cifrarse lt;/paramgt;

/// lt; Devuelve el resultado del cifrado de 16 bits, que toma del 9 al 25. bits del resultado del cifrado de 32 bitslt;/returnsgt;

cadena pública Get_MD5_Method1(string strSource)

{

//new

System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider ();

//Obtener la matriz de bytes de texto cifrado

byte[] bytResult = md5.ComputeHash (System.Text.Encoding.Default.GetBytes(strSource));

//Convertir a una cadena y tomar de 9 a 25 dígitos

string strResult = BitConverter.ToString(bytResult, 4, 8);

//Convertir a una cadena de caracteres, 32 bits

//string strResult = BitConverter.ToString(bytResult); La cadena convertida por BitConverter generará un delimitador en medio de cada carácter, lo que requiere Remove

strResult = strResult.Replace("-", "");

return strResult;

}

/* *//// lt; resumengt;

/// Método 2: crear un par que implemente un algoritmo de cifrado específico llamando el método Create en la clase abstracta de un algoritmo de cifrado específico

elefante.

/// lt;/summarygt;

/// lt;param name="strSource"gt;Texto sin formato que debe cifrarselt;/paramgt;

///lt; returngt; Devuelve el resultado del cifrado de 32 bitslt; /returnsgt;

cadena pública Get_MD5_Method2(string strSource)

{

cadena strResult = "";

//Crear

System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create(); >// Preste atención a la elección de codificación UTF8, UTF7, Unicode, etc.

byte[] bytResult = md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(strSource)

//Word Convierte matriz de tipo de sección a cadena

for (int i = 0; i lt; bytResult.Length; i)

{

//16 conversión avanzada del sistema

strResult = strResult bytResult[i].ToString("X");

}

return strResult; /p>

}

/**//// lt; resumengt;

/// Método tres: use directamente HashPasswordForStoringInConfigFile para generar

/// lt;/summarygt;

/// lt;param name="strSource"gt;El texto sin formato que debe cifrarselt;/paramgt;

/// lt;returnsgt;Devuelve el resultado del cifrado de 32 bitslt; /returnsgt;

cadena pública Get_MD5_Method3(string strSource)

{

return System.Web.Security .FormsAuthentication.HashPasswordForStoringInConfigFile(strSource, "MD5");

}

Estas funciones de cifrado se ejecutan en el lado del servidor, es decir, cuando el usuario ingresa la contraseña. La contraseña del usuario no está protegida de ninguna manera cuando se transmite del cliente al servidor, lo cual es muy peligroso. El enfoque del banco es instalar controles ActiveX en el cliente, cifrar cierta información importante sobre el cliente y luego enviarla. No sé cómo hacer esto y realmente espero aprender a crear este tipo de control ActiveX.