/////////////////////////////////////////////////////////// // 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.2: Ejemplo de implementación de una función // que utiliza la clase RijndaelManaged para cifrar un // archivo. Versión C#. /////////////////////////////////////////////////////////// private static void EncryptData(String inName, String outName, byte[] rijnKey, byte[] rijnIV) { // Crear las instancias de FileStream para manejear los archivos de entrada y salida FileStream fin = new FileStream(inName, FileMode.Open, FileAccess.Read); FileStream fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write); fout.SetLength(0); // Crear las variables que que ayudarán en la lectura y escritura byte[] bin = new byte[100]; // Almacenamiento intermedio para la encriptación long rdlen = 0; // Número total de bytes escritos long totlen = fin.Length; // Longitud total del archivo de entrada int len; // Número de bytes a escribir cada vez SymmetricAlgorithm rijn = SymmetricAlgorithm.Create(); // Crea la implementación por defecto, esto es RijndaelManaged CryptoStream encStream = 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 = rdlen + len; Console.WriteLine("{0} bytes procesados", rdlen); } encStream.Close(); fout.Close(); fin.Close(); }