Documente Academic
Documente Profesional
Documente Cultură
Ejemplos de cmo cifrar y descifrar usando las clases para encriptar con algoritmo RSA (RSACryptoServiceProvider). Se muestra tambin cmo guardar las claves en un fichero y despus usarlas desde ese fichero.
Introduccin:
En este artculo te muestro cmo usar la clase RSACryptoServiceProvider para encriptar (cifrar) y desencriptar (descifrar) cadenas usando el algoritmo criptogrfico RSA. Adems, en el ejemplo, te muestro cmo generar las claves, guardarlas en un fichero con la extensin XML y despus usar ese mismo fichero para usar con la clase RSACryptoServiceProvider. El cdigo de este ejemplo lo tienes ms abajo, tanto para Visual Basic como para Visual C#. En el cdigo de VB he puesto comentarios para cada uno de los mtodos, en C# no estn, pero vamos, que no creo que te cueste mirarlos en el cdigo de Visual Basic... y si te cuesta (o molesta), pues... pan y ajo colega! que tampoco hay que ser tan delicaillo... ;-)))) En teora debera funcionar con cualquier versin, aunque yo he usado el Visual Studio 2008 para escribir el ejemplo, s con seguridad que tambin funciona con Visual Studio 2005 y casi apostara que con las versiones anteriores, pero no lo he probado.
Imports Microsoft.VisualBasic Imports System Imports System.Text Imports System.Security.Cryptography Imports System.IO
Public Class PruebaRSA Private Shared dirPruebas As String = "E:\Pruebas3\RSA cripto" Private Shared ficPruebas As String = Path.Combine(dirPruebas, "MisClaves.xml")
Public Shared Sub Main() ' Cifrar y descifrar con RSA Console.Title = "Cifrar y descifrar con RSA"
' Si no existe el fichero de claves, ' crearlo y guardarlo en el fichero indicado If File.Exists(ficPruebas) = False Then crearXMLclaves(ficPruebas) End If
' Leer las claves del fichero Dim xmlKeys As String = clavesXML(ficPruebas)
' Cifrar la cadena indicada Dim datos As Byte() = cifrar("Hola RSA", xmlKeys)
' Descifrar el array de bytes con la cadena cifrada Dim res As String = descifrar(datos, xmlKeys)
Console.WriteLine(res)
''' <summary> ''' Guarda las claves en el fichero indicado ''' </summary> Private Shared Sub crearXMLclaves(ByVal ficPruebas As String) Dim rsa As New RSACryptoServiceProvider()
End Sub
''' <summary> ''' Lee las claves del fichero y las devuelve como una cadena ''' que se puede usar con FromXmlString de RSACryptoServiceProvider ''' </summary> Private Shared Function clavesXML(ByVal fichero As String) As String Dim s As String
''' <summary>
''' Cifra el texto indicado usando las claves en formato XML ''' </summary> Private Shared Function cifrar(ByVal texto As String, ByVal xmlKeys As String) As Byte() Dim rsa As New RSACryptoServiceProvider()
rsa.FromXmlString(xmlKeys)
''' <summary> ''' Descifra el array de bytes usando las claves en formato XML ''' </summary> Private Shared Function descifrar(ByVal datosEnc As Byte(), ByVal xmlKeys As String) As String Dim rsa As New RSACryptoServiceProvider()
rsa.FromXmlString(xmlKeys)
End Class
namespace cifradoRSA_CS { class Program { private static string dirPruebas = @"E:\Pruebas3\RSA cripto"; private static string ficPruebas = Path.Combine(dirPruebas, "MisClaves_CS.xml");
static void Main() { // Cifrar y descifrar con RSA Console.Title = "Cifrar y descifrar con RSA";
Console.WriteLine(res);
Console.ReadLine(); }
return s; }
private static byte[] cifrar(string texto, string xmlKeys) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(xmlKeys);
return datosEnc; }
rsa.FromXmlString(xmlKeys);
return res; } } }