Descripción general
La seguridad de los datos es primordial en el panorama digital actual y una forma eficaz de salvaguardar la información confidencial es mediante el cifrado. Esta descripción general lo guiará sobre cómo cifrar o descifrar un archivo completo o entradas específicas dentro de él, garantizando la confidencialidad e integridad de sus datos. Aspose.ZIP facilita una variedad de operaciones relacionadas con el cifrado y descifrado de archivos.Cómo cifrar o descifrar un archivo ZIP completo
Cifre el archivo Zip con el método tradicional
Hay dos métodos de cifrado disponibles para archivos ZIP: el tradicional, considerado ahora débil, y el moderno AES. El estándar ZIP permite cifrar cualquier entrada con cualquiera de estos métodos incluso dentro del mismo archivo. El cifrado AES ofrece mayor seguridad y está disponible en diferentes longitudes de clave (128 bits, 192 bits y 256 bits). Proporciona una mejor protección para datos confidenciales dentro de archivos ZIP.
Archivos comprimidos con Deflate
using (var zipFile = File.Open("archive.zip", FileMode.Create))
{
using (var source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
var archive = new Archive(new ArchiveEntrySettings(CompressionSettings.Deflate, new TraditionalEncryptionSettings("p@s$")));
archive.CreateEntry("alice29.txt", source);
archive.Save(zipFile);
}
}
Cifrar todo el archivo con el método AES
using (var zipFile = File.Open("archive.zip", FileMode.Create))
{
using (var source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive(new ArchiveEntrySettings(CompressionSettings.Deflate, new AesEcryptionSettings("p@s$", EncryptionMethod.AES256))))
{
archive.CreateEntry("alice29.txt", source);
archive.Save(zipFile);
}
}
}
Estos ejemplos muestran cómo incrustar instancias de EncryptionSetting en el correspondiente Constructor de archivos . Esto permite el cifrado selectivo de entradas individuales, manteniendo otras sin cifrar.
Cifre la segunda entrada de las tres en Zip Archive
using (FileStream zipFile = File.Open(this.resultFile, FileMode.Create))
{
FileInfo source1 = new FileInfo("alice29.txt");
FileInfo source2 = new FileInfo("asyoulik.txt");
FileInfo source3 = new FileInfo("fields.c");
using (var archive = new Archive())
{
archive.CreateEntry("alice29.txt", source1);
archive.CreateEntry("asyoulik.txt", source2, false, new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES256)));
archive.CreateEntry("fields.c", source3);
archive.Save(zipFile);
}
}
Si bien puede parecer poco convencional, es factible cifrar entradas específicas dentro de un archivo ZIP utilizando diferentes métodos de cifrado y contraseñas. Este enfoque permite una estrategia de seguridad más granular y personalizada, donde los archivos individuales o grupos de archivos pueden tener distintos niveles de protección. Sin embargo, es importante tener en cuenta que esta práctica puede complicar el proceso de administración y descifrado, y la compatibilidad con varias herramientas de archivo ZIP puede variar.
Cifrar Zip con diferentes métodos y contraseñas
using (FileStream zipFile = File.Open(this.resultFile, FileMode.Create))
{
FileInfo source1 = new FileInfo("alice29.txt");
FileInfo source2 = new FileInfo("asyoulik.txt");
FileInfo source3 = new FileInfo("fields.c");
using (var archive = new Archive())
{
archive.CreateEntry("alice29.txt", source1, false, new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$1", EncryptionMethod.AES256)));
archive.CreateEntry("asyoulik.txt", source2, false, new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$2")));
archive.CreateEntry("fields.c", source3, false, new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$3", EncryptionMethod.AES256)));
archive.Save(zipFile);
}
}
Aspose.ZIP le permite agregar cifrado a un archivo existente sin volver a empaquetar completamente el contenido. Sin embargo, es importante tener en cuenta que todas las entradas del archivo deben estar desprotegidas; de lo contrario, se planteará una excepción.
Cifrar el archivo ZIP existente
using (var archive = new Archive("plain.zip"))
{
archive.Save("encrypted.zip", new ArchiveSaveOptions()
{
EncryptionOptions = new AesEcryptionSettings("p@s$", EncryptionMethod.AES256)
});
}
Descifrar un archivo Zip
El usuario tiene la opción de descifrar una entrada específica dentro del archivo ZIP cifrado o todo el archivo en su conjunto.
Descifrar entrada particular
using (var zipFile = File.Open("archive.zip", FileMode.Create))
{
using (var source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
var archive = new Archive(new ArchiveEntrySettings(CompressionSettings.Deflate, new TraditionalEncryptionSettings("p@s$")));
archive.CreateEntry("alice29.txt", source);
archive.Save(zipFile);
}
}
Descifrar todo el archivo Zip
En este caso necesitamos proporcionar una contraseña dentro de un constructor.
using (var zipFile = File.Open("archive.zip", FileMode.Create))
{
using (var source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive(new ArchiveEntrySettings(CompressionSettings.Deflate, new AesEcryptionSettings("p@s$", EncryptionMethod.AES256))))
{
archive.CreateEntry("alice29.txt", source);
archive.Save(zipFile);
}
}
}
Cómo cifrar o descifrar un archivo RAR
Descifrar un archivo RAR
Aspose.ZIP no admite la composición de archivos RAR, solo admite la extracción.
Archivo RAR
se puede cifrar con o sin protección de nombres de archivos.
En el primer caso, el usuario debe proporcionar una contraseña de descifrado dentro de
RarArchiveLoadOptions
al comienzo de la creación de instancias del archivo RAR. En el último caso, es posible pasar la contraseña más adelante durante la extracción de la entrada.
Descifre el archivo RAR completo con nombres de archivos cifrados
using (RarArchive archive = new RarArchive("source.rar",
new RarArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
{
archive.ExtractToDirectory("destination");
}
Descifrar una entrada particular del archivo RAR
Este ejemplo funcionaría si solo se cifra el contenido de las entradas, pero no los nombres de los archivos.
using (RarArchive archive = new RarArchive("source.rar"))
{
archive.Entries[0].Extract("first_entry.bin", "p@s$");
}
Descifrar una entrada particular del archivo RAR como una secuencia
Sin embargo, en este ejemplo , se supone que solo se cifra el contenido de las entradas, no los nombres de los archivos. . Esto requiere copiar bytes de entrada a un flujo de memoria.
MemoryStream destination = new MemoryStream();
using (RarArchive archive = new RarArchive("source.rar"))
{
using (var source = archive.Entries[1].Open("p@s$"))
{
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0)
{
destination.Write(buffer, 0, bytesRead);
}
}
}
Cómo cifrar o descifrar todo el archivo 7ZIP
Métodos para cifrar archivos comprimidos 7z
La única opción de cifrado de archivos 7z es AES .
Cifre y comprima con el archivo 7z completo LZMA2
Los archivos 7Z admiten la capacidad de cifrar cada entrada con su propia contraseña o dejarla desprotegida.
using (FileStream szFile = File.Open("archive.7z", FileMode.Create))
{
FileInfo source1 = new FileInfo("alice29.txt");
FileInfo source2 = new FileInfo("asyoulik.txt");
FileInfo source3 = new FileInfo("fields.c");
using (var archive = new SevenZipArchive(new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings(), new SevenZipAESEncryptionSettings("p@s$"))))
{
archive.CreateEntry("alice29.txt", source1);
archive.CreateEntry("asyoulik.txt", source2);
archive.CreateEntry("fields.c", source3);
archive.Save(szFile);
}
}
Cifre las entradas del archivo 7z con sus propias contraseñas y deje una entrada sin cifrar
Al igual que ZIP, el usuario puede descifrar el archivo completo o una entrada particular del mismo.
El archivo 7Z se puede cifrar con o sin proteger los nombres de los archivos. Si los nombres de los archivos están cifrados, debe proporcionar una contraseña
al crear instancias de archivo
.
using (FileStream szFile = File.Open("archive.7z", FileMode.Create))
{
FileInfo source1 = new FileInfo("alice29.txt");
FileInfo source2 = new FileInfo("asyoulik.txt");
FileInfo source3 = new FileInfo("fields.c");
using (var archive = new SevenZipArchive())
{
archive.CreateEntry("alice29.txt", source1);
archive.CreateEntry("asyoulik.txt", source2, false, new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings(), new SevenZipAESEncryptionSettings("p@s$")));
archive.CreateEntry("fields.c", source3, false, new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings(), new SevenZipAESEncryptionSettings("$ecret")));
archive.Save(szFile);
}
}
Descifre el archivo completo con nombres de archivos cifrados en el directorio
Ya sea que los nombres de los archivos estén cifrados o no, es seguro proporcionar una contraseña dentro del constructor de extracción.
El siguiente ejemplo solo funcionará cuando solo el contenido esté protegido.
using (SevenZipArchive archive = new SevenZipArchive("archive.7z", "p@s$"))
{
archive.ExtractToDirectory("C:\\extracted");
}
Descifrar entrada particular
using (SevenZipArchive archive = new SevenZipArchive("archive.7z"))
{
archive.Entries[0].Extract("data.bin", "p@s$");
}
Otras características compatibles de Aspose.ZIP para .NET API
Utilice la biblioteca Aspose.ZIP C# para convertir, fusionar, editar documentos de archivos zip, extraer datos de archivos y mucho más.
Support and Learning Resources
- Learning Resources
- Documentation
- Source Code
- API References
- Tutorial Videos
- Product Support
- Free Support
- Paid Support
- Blog
- Release Notes
- Why Aspose.ZIP for .NET?
- Customers List
- Success Stories