Sunteți pe pagina 1din 7

ENCRIPTAR

QUE ES LA ENCRIPTACIN DE LA INFORMTICA


Para saber que es la encriptacin informtica, primero definiremos lo que es la encriptacin. Encriptar es una manera de codificar la informacin para protegerla frente a terceros. Por lo tanto la encriptacin informtica sera la codificacin la informacin de archivos o de un correo electrnico para que no pueda ser descifrado en caso de ser interceptado por alguien mientras esta informacin viaja por la red. Es por medio de la encriptacin informtica como se codifican los datos. Solamente a travs de un software de descodificacin que conoce el autor de estos documentos encriptados es como se puede volver a decodificar la informacin. Por lo que la encriptacin informtica es simplemente la codificacin de la informacin que vamos a enviar a travs de la red (Internet). Para poder descodificarla como dijimos es necesario un software o una clave que slo conocen el emisor y el receptor de esta informacin. La encriptacin de la informtica se hace cada vez ms necesaria debido al aumento de los robos de claves de tarjetas de crdito, nmero de cuentas corrientes, y en general toda la informacin que viaja por la red, etc. Todo esto ha fomentado que se quiera conseguir una mayor seguridad en la transmisin de la informacin sobre todo a travs de Internet. Es por ello que las ltimas versiones de los navegadores de Internet ya usan sistemas automticos de encriptacin de datos para que sea ms difcil para los hackers robarlos.

Encriptar y desencriptar (CIFRAR y DESCIFRAR) Codificar y decodificar

CMO: Cifrar y descifrar un archivo mediante Visual Basic .NET


Id. de artculo: 301070 - Ver los productos a los que se aplica este artculo

Este artculo se public anteriormente con el nmero E301070 Expandir todo | Contraer todo

En esta pgina
o o o o o Resumen Requisitos Cifrado y descifrado Comprobar que funciona Lista completa de cdigo REFERENCIAS Propiedades Enviar comentarios

<style>.tocTitle, #tocDiv{display: none;}</style>

Resumen
En este artculo se muestra cmo utilizar las clases de cifrado proporcionadas por Microsoft .NET Framework para cifrar un archivo de texto en un estado ilegible y despus descifrar esa informacin para devolverla a su formato original.

Requisitos
La lista siguiente describe el hardware, el software, la infraestructura de red y los Service Pack recomendados que necesitar: Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server o Windows NT 4.0 Server Microsoft Visual Studio .NET

Cifrado y descifrado
El espacio de nombres System.Security.Cryptographic de Microsoft .NET Framework proporciona diversas herramientas que ayudan al cifrado y el descifrado. La clase CryptoStream es una de las numerosas clases que se proporcionan y est diseada para cifrar o descifrar el contenido a medida que se transmite en secuencias a un archivo. Para cifrar un archivo, siga estos pasos: 1. Abra Visual Studio .NET. 2. Cree una nueva aplicacin de consola en Microsoft Visual Basic .NET. Visual Basic .NET crear un mdulo y un procedimiento Main() vaco.

3.

4. 5. 6. 7. 8.

Utilice la instruccin Imports de los espacios de nombres System, System.Security, System.Security.Cryptography, System.Text y System.IO de forma que no tenga que suministrar declaraciones de estos espacios de nombres ms adelante en el cdigo. Debe utilizar estas instrucciones antes que cualquier otra declaracin. Imports System Imports System.IO Imports System.Security Imports System.Security.Cryptography Imports System.Text

Agregue a la clase o al mdulo una constante que represente la clave secreta de cifrado y descifrado. 9. 'Debe ser 64 bits, 8 bytes. Private Const sSecretKey As String = "Password" 10. Cree un mtodo dentro de la clase llamado EncryptFile, con tres parmetros: sInputFile , sOutputFile y sKey (la clave secreta que se utiliza para cifrar y descifrar el archivo). 11. Sub EncryptFile(ByVal sInputFilename As String, _ 12. ByVal sOutputFilename As String, _ 13. ByVal sKey As String) End Sub 14. En el procedimiento EncryptFile, cree objetos FileStream de entrada y de salida para controlar la lectura y la escritura de los archivos de destino. 15. Dim fsInput As New FileStream(sInputFilename, _ 16. FileMode.Open, FileAccess.Read) 17. Dim fsEncrypted As New FileStream(sOutputFilename, _ FileMode.Create, FileAccess.Write) 18. Declare una instancia de la clase DESCryptoServiceProvider, que representa la tecnologa real de cifrado y descifrado que se utilizar en los archivos. En este momento puede crear otro proveedor diferente si prefiere utilizar RSA u otra tcnica de cifrado. Dim DES As New DESCryptoServiceProvider() 19. El proveedor de cifrado debe proporcionarle la clave secreta como una matriz de bytes. El espacio de nombres System.Text proporciona una til funcin GetBytes(), que toma una cadena y devuelve una matriz de bytes, como parte de sus caractersticas de codificacin. El tamao de la clave es diferente para cada tcnica de cifrado; DES utiliza una clave de 64 bits, es decir, 8 bytes u 8 caracteres. Si no proporciona ninguna clave, el proveedor generar una de forma aleatoria, de manera que se codificar un archivo sin que exista ninguna manera de descifrarlo. Adems, debe proporcionar el vector de inicializacin (IV). Este valor se utiliza como parte del cifrado y, al igual que la clave, se genera de forma aleatoria si no lo proporciona. Como tiene que ser el mismo para el cifrado y el descifrado, no resulta til dejar que se genere de forma aleatoria. 20. DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey) DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey) 21. Cree una instancia de la clase CryptoStream, utilizando el proveedor de cifrado para obtener un objeto de cifrado (CreateEncryptor) y el objeto de salida FileStream existente como parte del constructor. 22. Dim cryptostream As New CryptoStream(fsEncrypted, _

23.

desencrypt, _ CryptoStreamMode.Write)

24. Por ltimo, lea en el archivo de entrada y escriba en el archivo de salida que se est pasando al objeto CryptoStream, en el que se cifrar con la clave que proporcion. 25. Dim bytearrayinput(fsInput.Length - 1) As Byte 26. fsInput.Read(bytearrayinput, 0, bytearrayinput.Length) cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length) 27. Cree un mtodo llamado DecryptFile. El proceso de descifrado es muy similar al proceso de cifrado, pero hay dos diferencias importantes entre los procedimientos DecryptFile y EncryptFile. En primer lugar, se utiliza CreateDecryptor en lugar de CreateEncryptor para la creacin del objeto CryptoStream, especificando cmo se utilizar el objeto. En segundo lugar, al escribir el texto descifrado en el archivo de destino, el objeto CryptoStream es ahora el origen en vez de la secuencia de destino. 28. Sub DecryptFile(ByVal sInputFilename As String, _ 29. ByVal sOutputFilename As String, _ 30. ByVal sKey As String) 31. 32. Dim DES As New DESCryptoServiceProvider() 33. 'Se requiere una clave de 64 bits y IV para este proveedor. 34. 'Establecer la clave secreta para el algoritmo DES. 35. DES.Key() = ASCIIEncoding.ASCII.GetBytes(sKey) 36. 'Establecer el vector de inicializacin. 37. DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey) 38. 39. 'crear la secuencia de archivos para volver a leer el archivo cifrado 40. Dim fsread As New FileStream(sInputFilename, FileMode.Open, FileAccess.Read) 41. 'crear descriptor DES a partir de nuestra instancia de DES 42. Dim desdecrypt As ICryptoTransform = DES.CreateDecryptor() 43. 'crear conjunto de secuencias de cifrado para leer y realizar 44. 'una transformacin de descifrado DES en los bytes entrantes 45. Dim cryptostreamDecr As New CryptoStream(fsread, desdecrypt, CryptoStreamMode.Read) 46. 'imprimir el contenido de archivo descifrado 47. Dim fsDecrypted As New StreamWriter(sOutputFilename) 48. fsDecrypted.Write(New StreamReader(cryptostreamDecr).ReadToEnd) 49. fsDecrypted.Flush() 50. fsDecrypted.Close() End Sub 51. Agregue lneas al procedimiento Main() para llamar tanto a EncryptFile como a DecryptFile. 52. Public Sub Main() 53. EncryptFile("c:\temp\test.txt", _ 54. "c:\temp\Encrypted.txt", _ 55. sSecretKey) 56. DecryptFile("c:\temp\Encrypted.txt", _ 57. "c:\temp\Decrypted.txt", _ 58. sSecretKey) End Sub

59. Guarde y ejecute la aplicacin, y asegrese de que la ruta utilizada para el nombre de archivo de entrada seala a un archivo existente (y que no sea excesivamente importante).

Comprobar que funciona


Pruebe este cdigo con un archivo de texto (.txt) para confirmar que realmente cifr y descifr el archivo correctamente. Asegrese de que descifra el archivo en un archivo nuevo (como en el procedimiento Sub Main() de este artculo) en lugar de en el archivo original. Examine el archivo descifrado y comprelo con el original.

Lista completa de cdigo


Imports Imports Imports Imports Imports System System.IO System.Security System.Security.Cryptography System.Text

Module Module1 'Debe ser 64 bits, 8 bytes. Private Const sSecretKey As String = "Password" Public Sub Main() EncryptFile("c:\temp\test.txt", _ "c:\temp\Encrypted.txt", _ sSecretKey) DecryptFile("c:\temp\Encrypted.txt", _ "c:\temp\Decrypted.txt", _ sSecretKey) End Sub Sub EncryptFile(ByVal sInputFilename As String, _ ByVal sOutputFilename As String, _ ByVal sKey As String) Dim fsInput As New FileStream(sInputFilename, _ FileMode.Open, FileAccess.Read) Dim fsEncrypted As New FileStream(sOutputFilename, _ FileMode.Create, FileAccess.Write) Dim DES As New DESCryptoServiceProvider() 'Establecer la clave secreta para el algoritmo DES. 'Se necesita una clave de 64 bits y IV para este proveedor DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey) 'Establecer el vector de inicializacin. DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey) 'crear cifrado DES a partir de esta instancia Dim desencrypt As ICryptoTransform = DES.CreateEncryptor()

'Crear una secuencia de cifrado que transforma la secuencia 'de archivos mediante cifrado DES Dim cryptostream As New CryptoStream(fsEncrypted, _ desencrypt, _ CryptoStreamMode.Write) 'Leer el texto del archivo en la matriz de bytes Dim bytearrayinput(fsInput.Length - 1) As Byte fsInput.Read(bytearrayinput, 0, bytearrayinput.Length) 'Escribir el archivo cifrado con DES cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length) cryptostream.Close() End Sub Sub DecryptFile(ByVal sInputFilename As String, _ ByVal sOutputFilename As String, _ ByVal sKey As String) Dim DES As New DESCryptoServiceProvider() 'Se requiere una clave de 64 bits y IV para este proveedor. 'Establecer la clave secreta para el algoritmo DES. DES.Key() = ASCIIEncoding.ASCII.GetBytes(sKey) 'Establecer el vector de inicializacin. DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey) 'crear la secuencia de archivos para volver a leer el archivo cifrado Dim fsread As New FileStream(sInputFilename, FileMode.Open, FileAccess.Read) 'crear descriptor DES a partir de nuestra instancia de DES Dim desdecrypt As ICryptoTransform = DES.CreateDecryptor() 'crear conjunto de secuencias de cifrado para leer y realizar 'una transformacin de descifrado DES en los bytes entrantes Dim cryptostreamDecr As New CryptoStream(fsread, desdecrypt, CryptoStreamMode.Read) 'imprimir el contenido de archivo descifrado Dim fsDecrypted As New StreamWriter(sOutputFilename) fsDecrypted.Write(New StreamReader(cryptostreamDecr).ReadToEnd) fsDecrypted.Flush() fsDecrypted.Close() End Sub End Module

REFERENCIAS
Para obtener ms informacin acerca de cmo utilizar las caractersticas de cifrado de .NET y la criptografa en general, consulte los siguientes sitios Web: Material de referencia de System.Security.Cryptography http://msdn.microsoft.com/library/dotnet/cpref/frlrfsystemsecuritycryptography.htm MSDN Online .NET Developer Center http://msdn.microsoft.com/net Ejemplos del tutorial http://www.gotdotnet.com/quickstart

S-ar putea să vă placă și