Grupo
Manejo de archivos en C#
Objectivo
1. El programa requiere que el usuario proporcione el nombre del archivo BMP que se va a cifrar o descifrar.
2. Lee los dos primeros bytes del archivo para identificar si empieza por "BM" o "MB".
3. Si los dos primeros bytes son "BM", el programa los reemplazará por "MB" (cifrado).
4. Si los dos primeros bytes son "MB", el programa los reemplazará por "BM" (descifrado).
5. Utilice el programa de la siguiente manera:
encryptDecrypt myImage.bmp
6. El programa modifica el archivo en su lugar y no crea uno nuevo.
Cree un programa para cifrar/descifrar un archivo de imagen BMP cambiando la marca "BM" en los dos primeros bytes a "MB" y viceversa.
Utilice el constructor avanzado FileStream para habilitar la lectura y escritura simultáneas.
Ejemplo de ejercicio en C#
Mostrar código C#
using System;
using System.IO;
class BMPEncryptDecrypt
{
static void Main(string[] args)
{
if (args.Length != 1)
{
Console.WriteLine("Usage: encryptDecrypt ");
return;
}
string fileName = args[0];
if (!File.Exists(fileName))
{
Console.WriteLine("The specified file does not exist.");
return;
}
try
{
using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite))
{
byte[] buffer = new byte[2];
fs.Read(buffer, 0, 2);
if (buffer[0] == 'B' && buffer[1] == 'M')
{
Console.WriteLine("Encrypting file...");
fs.Seek(0, SeekOrigin.Begin);
fs.WriteByte((byte)'M');
fs.WriteByte((byte)'B');
Console.WriteLine("File encrypted successfully.");
}
else if (buffer[0] == 'M' && buffer[1] == 'B')
{
Console.WriteLine("Decrypting file...");
fs.Seek(0, SeekOrigin.Begin);
fs.WriteByte((byte)'B');
fs.WriteByte((byte)'M');
Console.WriteLine("File decrypted successfully.");
}
else
{
Console.WriteLine("The file does not have the expected 'BM' or 'MB' marker.");
}
}
}
catch (Exception ex)
{
Console.WriteLine("An error occurred: " + ex.Message);
}
}
}
Output
//For example, if you run the program on a BMP file named myImage.bmp:
//When encrypting (changing "BM" to "MB"):
Encrypting file...
File encrypted successfully.
//When decrypting (changing "MB" back to "BM"):
Decrypting file...
File decrypted successfully.
Código de ejemplo copiado
Comparte este ejercicio de C#