Red de conocimiento informático - Computadora portátil - Cómo implementar el cifrado RSA en ASP.

Cómo implementar el cifrado RSA en ASP.

En nuestras aplicaciones reales, el cifrado es un medio importante para garantizar la seguridad de los datos. En el pasado, cuando se usaba ASP, se podían usar los algoritmos MD y SHA para cifrar datos. Estos dos algoritmos son rápidos y eficaces, pero no pueden revertir el texto cifrado, es decir, descifrarlo. Por lo tanto, estos dos métodos no son adecuados si necesita descifrar datos. Por supuesto, también puedes escribir tus propios programas de cifrado y descifrado para este fin. Sin embargo, esto requiere un alto nivel de matemáticas, lo que es difícil de lograr para la gente común. Ahora, con la introducción de ASP Net, el modelo de programación bajo ASP ha cambiado por completo. Podemos utilizar los servicios de cifrado proporcionados por las clases en Net Framework. Para garantizar la seguridad de los datos, el método de cifrado más utilizado actualmente es utilizar el algoritmo RSA en Net Framework para cifrar datos, que está relacionado con el algoritmo de cifrado RSA. En Net Framework, hay dos clases principales relacionadas con el algoritmo de cifrado RSA: clase RSA y clase RSACryptoServiceProvider. Según MSDN, la clase RSA es la clase base de la que heredan todas las implementaciones del algoritmo RSA, y la clase RSACryptoServiceProvider es la clase base utilizada para implementar el cifrado asimétrico y cifrar datos utilizando el algoritmo RSA proporcionado por un proveedor de servicios criptográficos (CSP). . Además, la estructura RSAParameters, que representa los parámetros estándar del algoritmo RSA, también es muy importante. Contiene los parámetros del algoritmo RSA. Hay muchos artículos o libros que presentan los principios del algoritmo RSA, por lo que no entraré en detalles aquí. El tipo de parámetros RSA es la estructura RSAParameters mencionada anteriormente. Mirando MSDN, podemos ver que contiene ocho campos: D DP DQ Exponente InverseQ Módulo P Q. Describe cómo generar dos parámetros RSA RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); RSAParameters rsaParamsExcludePrivate=rsa ExportParameters(false); RSAParameters rsaParamsIncludePrivate=rsa ExportParameters(true); Se utiliza para exportar parámetros RSA, verdadero significa exportar la clave privada de los ocho campos anteriores, falso significa exportar la clave pública. Cifrado y descifrado utilizando parámetros RSA Este paso requiere importar los dos parámetros anteriores en un objeto de la clase RSACryptoServiceProvider y luego usarlo para cifrar los datos, como se muestra en el siguiente código.

Podemos escribir una función para completar el proceso de cifrado Public byte [ ] RSAEncrypt ( byte [ ] b){ RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa ImportParameters(rsaParamsExcludePrivate); //Importar byte de clave pública [ ] EncryptedData= rsa Encrypt(DataToEncrypt); false ); return EncryptedData;}

?

?Para descifrar, simplemente reemplace rsa ImportParameters(rsaParamsExcludePrivate)

con rsa ImportParameters(rsaParamsExcludePrivate) y luego Encrypt reemplazado por Decrypt

Guardar y cargar parámetros RSA Los parámetros RSA se pueden guardar en formato XML; el siguiente código ilustra cómo guardarlos y cargarlos (solo se enumeran las partes clave)

Guardar: RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); StreamWriterwriter=new StreamWriter(@ d:\PublicAndPrivateKey xml); string PPKeyXml=rsa ToXmlString(true); //guardar escritor de clave privada Write(PPKeyXml); Close (); escritor=new StreamWriter(@ d:\PublicKey xml); // guardar clave privada\PublicKey xml); cadena PKeyXml=rsa ToXmlString(false); )

Leer RSACryptoServiceProvider rsa = nuevo RSACryptoServiceProvider(); StreamReader lector=nuevo StreamReader(@d:\publickeyxml); StreamReader lector=new StreamReader (@ d:\PublicAndPrivateKey xml); string PPKey=reader ReadToEnd(); lector Close();

Los métodos ToXmlString y ExportParameters son similares, falso significa guardar la clave pública, verdadero significa guardar clave privada lishixinzhi/Article/program/net/ 201311/15146