'////////////////////////////////////////////////////////// '// CRIPTOGRAFIA - Técnicas de desarrollo para profesionales '////////////////////////////////////////////////////////// '// Capítulo 4: Criptografía en entornos .NET '// Sección 4.3: Codificación de encriptación simétrica '////////////////////////////////////////////////////////// '// Listado 4.1: Ejemplo de implementación de una función '// que utiliza la clase RijndaelManaged para cifrar un '// archivo. Versión VB.NET. '////////////////////////////////////////////////////////// Private Shared Sub EncryptData(inName As String, outName As String, _ rijnKey() As Byte, rijnIV() As Byte) ' Crear las instancias de FileStream para manejear los archivos de entrada y salida Dim fin As New FileStream(inName, FileMode.Open, FileAccess.Read) Dim fout As New FileStream(outName, FileMode.OpenOrCreate, _ FileAccess.Write) fout.SetLength(0) ' Crear las variables que que ayudarán en la lectura y escritura Dim bin(100) As Byte ' Almacenamiento intermedio para la encriptación Dim rdlen As Long = 0 ' Número total de bytes escritos Dim totlen As Long = fin.Length ' Longitud total del archivo de entrada Dim len As Integer ' Número de bytes a escribir cada vez ' Crea la implementación por defecto, esto es RijndaelManaged Dim rijn As SymmetricAlgorithm = SymmetricAlgorithm.Create() Dim encStream As New CryptoStream(fout, _ rijn.CreateEncryptor(rijnKey, rijnIV), CryptoStreamMode.Write) Console.WriteLine("Encriptando...") ' Leer desde el archivo de entrada, luego encriptar y escribir al archivo de salida While rdlen < totlen len = fin.Read(bin, 0, 100) encStream.Write(bin, 0, len) rdlen = Convert.ToInt32(rdlen + len) Console.WriteLine("{0} bytes procesados", rdlen) End While encStream.Close() fout.Close() fin.Close() End Sub