Protecci�n de archivos con contrase�a
La API Aspose.ZIP le permite comprimir y descomprimir archivos en C# o cualquier idioma .NET sin preocuparse por la estructura del archivo subyacente. Este art�culo proporciona ejemplos de c�mo implementar protecci�n con contrase�a con esquemas de cifrado tradicionales y AES. Adem�s, muestra c�mo trabajar con directorios y comprimir varios archivos utilizando t�cnicas de cifrado mixtas.
Protecci�n con contrase�a con cifrado tradicional
Aspose.ZIP permite la protecci�n con contrase�a tradicional para archivos comprimidos. Con una contrase�a simple, puede proteger archivos individuales o directorios completos dentro de un archivo, asegurando que solo los usuarios autorizados puedan extraer el contenido.
Cifrar archivos con el esquema de cifrado tradicional
Cifre archivos utilizando un m�todo de cifrado tradicional m�s simple. Este enfoque permite una protecci�n b�sica de los archivos con contrase�a, lo que garantiza que los archivos se compriman de forma segura y al mismo tiempo permanezcan accesibles mediante el uso de la contrase�a correcta.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream zipFile = File.Open(dataDir + "CompressWithTraditionalEncryption_out.zip", FileMode.Create))
3 {
4 using (FileStream source1 = File.Open(dataDir + "alice29.txt", FileMode.Open, FileAccess.Read))
5 {
6 var archive = new Archive(new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$")));
7 archive.CreateEntry("alice29.txt", source1);
8 archive.Save(zipFile);
9 }
10 }Cifrar archivos con cifrado AES
Aspose.ZIP para .NET proporciona capacidades de cifrado para ayudarlo a proteger archivos confidenciales dentro de archivos. La API admite el cifrado AES y ofrece varios tama�os de clave (128 bits, 192 bits y 256 bits) para distintos niveles de seguridad. Con estos m�todos de cifrado, puede asegurarse de que sus datos est�n bien protegidos y solo sean accesibles para usuarios autorizados.
Cifrado de archivos con AES128
Aspose.ZIP para .NET proporciona capacidades de cifrado para ayudarlo a proteger archivos confidenciales dentro de archivos. La API admite el cifrado AES y ofrece varios tama�os de clave (128 bits, 192 bits y 256 bits) para distintos niveles de seguridad. Con estos m�todos de cifrado, puede asegurarse de que sus datos est�n bien protegidos y solo sean accesibles para usuarios autorizados. Aqu� tienes un ejemplo de c�mo se hace.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream zipFile = File.Open(dataDir + "PasswordProtectWithAES128_out.zip", FileMode.Create))
3 {
4 using (FileStream source1 = File.Open(dataDir + "alice29.txt", FileMode.Open, FileAccess.Read))
5 {
6 using (var archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128))))
7 {
8 archive.CreateEntry("alice29.txt", source1);
9 archive.Save(zipFile);
10 }
11 }
12 }Cifrado de archivos con AES192
El cifrado AES192 ofrece un mayor nivel de seguridad en comparaci�n con AES128, con una sobrecarga de cifrado ligeramente mayor. Este m�todo es adecuado para escenarios donde se requiere una protecci�n m�s fuerte sin comprometer demasiado el rendimiento. Consulte el siguiente ejemplo para comprender su uso.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream zipFile = File.Open(dataDir + "PasswordProtectWithAES192_out.zip", FileMode.Create))
3 {
4 using (FileStream source1 = File.Open(dataDir + "alice29.txt", FileMode.Open, FileAccess.Read))
5 {
6 using (var archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES192))))
7 {
8 archive.CreateEntry("alice29.txt", source1);
9 archive.Save(zipFile);
10 }
11 }
12 }Cifrado de archivos con AES256
AES256 es la opci�n de cifrado m�s potente disponible en la familia AES y proporciona la m�xima seguridad. Es ideal para proteger datos altamente confidenciales donde se necesita la m�xima seguridad, incluso si se requiere m�s potencia computacional para el cifrado y descifrado. Vea el ejemplo a continuaci�n.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream zipFile = File.Open(dataDir + "PasswordProtectWithAES256_out.zip", FileMode.Create))
3 {
4 using (FileStream source1 = File.Open(dataDir + "alice29.txt", FileMode.Open, FileAccess.Read))
5 {
6 using (var archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES256))))
7 {
8 archive.CreateEntry("alice29.txt", source1);
9 archive.Save(zipFile);
10 }
11 }
12 }Directorio protegido con contrase�a
Adem�s de cifrar archivos individuales, Aspose.ZIP le permite proteger con contrase�a directorios completos. Esto es particularmente �til cuando necesita cifrar varios archivos a la vez, protegiendo todo el contenido de un directorio con una �nica contrase�a.
1// Para obtener ejemplos completos y archivos de datos, vaya a https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2usando (FileStream zipFile = File.Open(".\\all_corpus_encrypted_out.zip", FileMode.Create))
3{
4 DirectoryInfo corpus = new DirectoryInfo(".\\CanterburyCorpus");
5 usando (var archive = new Archive(new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$"))))
6 {
7 archive.CreateEntries(corpus);
8 archivo.Guardar(zipFile);
9 }
10} Cifre varios archivos con t�cnicas de cifrado mixtasAPI tambi�n admite el uso de diferentes t�cnicas de cifrado dentro del mismo archivo. Esto le permite aplicar una combinaci�n de algoritmos de cifrado, como AES y protecci�n con contrase�a tradicional, a diferentes archivos seg�n su sensibilidad y requisitos de seguridad. Esta flexibilidad permite un control m�s granular sobre la protecci�n de archivos dentro de un archivo. Eche un vistazo a este ejemplo para ver c�mo funciona en la pr�ctica.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream zipFile = File.Open(dataDir + "CompressWithTraditionalEncryption_out.zip", FileMode.Create))
3 {
4 using (FileStream source1 = File.Open(dataDir + "alice29.txt", FileMode.Open, FileAccess.Read))
5 {
6 var archive = new Archive(new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$")));
7 archive.CreateEntry("alice29.txt", source1);
8 archive.Save(zipFile);
9 }
10 }Descompresi�n de archivos protegidos con contrase�a
Despu�s de cifrar archivos, tambi�n necesitar� saber c�mo descifrarlos y extraerlos cuando sea necesario. Aspose.ZIP simplifica la descompresi�n de archivos protegidos con contrase�a, independientemente de si se utiliz� cifrado tradicional o AES. Puede extraer archivos individualmente o descomprimir un directorio cifrado completo.
Descompresi�n de archivos tradicionalmente protegidos con contrase�a
Extraiga f�cilmente archivos que han sido protegidos con una contrase�a tradicional. Este m�todo maneja archivos protegidos mediante t�cnicas de cifrado m�s antiguas, lo que garantiza el acceso a sus datos una vez que se proporciona la contrase�a correcta.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream fs = File.OpenRead(dataDir + "CompressWithTraditionalEncryption_out.zip"))
3 {
4 using (var extracted = File.Create(dataDir + "alice_extracted_out.txt"))
5 {
6 using (Archive archive = new Archive(fs, new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
7 {
8 using (var decompressed = archive.Entries[0].Open())
9 {
10 byte[] b = new byte[8192];
11 int bytesRead;
12 while (0 < (bytesRead = decompressed.Read(b, 0, b.Length)))
13 {
14 extracted.Write(b, 0, bytesRead);
15 }
16 }
17 }
18 }
19 }Descomprimir archivos cifrados AES
Esta secci�n cubre c�mo extraer archivos cifrados mediante AES, uno de los est�ndares de cifrado m�s seguros. Ya sea que est� tratando con AES128, AES192 o AES256, el proceso de extracci�n es sencillo siempre que se proporcione la clave de descifrado correcta.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream fs = File.OpenRead(dataDir + "PasswordProtectWithAES256_out.zip"))
3 {
4 using (var extracted = File.Create(dataDir + "alice_aesextracted_out.txt"))
5 {
6 using (Archive archive = new Archive(fs))
7 {
8 using (var decompressed = archive.Entries[0].Open("p@s$"))
9 {
10 byte[] b = new byte[8192];
11 int bytesRead;
12 while (0 < (bytesRead = decompressed.Read(b, 0, b.Length)))
13 {
14 extracted.Write(b, 0, bytesRead);
15 }
16 }
17 }
18 }
19 }Descomprimir el archivo almacenado cifrado AES
Extraiga archivos de un archivo que haya sido cifrado y almacenado sin compresi�n. Este proceso garantiza que incluso los archivos sin comprimir permanezcan seguros, protegiendo los datos confidenciales y manteniendo la estructura del archivo original.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream fs = File.OpenRead(dataDir + "StoreMutlipleFilesWithoutCompressionWithPassword_out.zip"))
3 {
4 using (var extracted = File.Create(dataDir + "alice_aesextracted_out.txt"))
5 {
6 using (Archive archive = new Archive(fs, new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
7 {
8 using (var decompressed = archive.Entries[0].Open())
9 {
10 byte[] b = new byte[8192];
11 int bytesRead;
12 while (0 < (bytesRead = decompressed.Read(b, 0, b.Length)))
13 {
14 extracted.Write(b, 0, bytesRead);
15 }
16 }
17 }
18 }
19 }Descomprimir carpeta cifrada en directorio
Extraiga directorios cifrados completos a su estructura de carpetas original. Este proceso restaura todos los archivos del archivo cifrado a un directorio espec�fico preservando al mismo tiempo su jerarqu�a y seguridad originales, siempre que se utilice la clave de descifrado correcta.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream zipFile = File.Open(".\\all_corpus_encrypted.zip", FileMode.Open))
3 {
4 new Archive(zipFile, new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }).ExtractToDirectory(".\\all_corpus_decrypted");
5 }Descomprimiendo archivos
Aspose.ZIP para .NET ofrece una API f�cil de usar para descomprimir archivos, ya sea que contengan un solo archivo, varios archivos o incluso archivos almacenados sin compresi�n. Esta secci�n muestra varios escenarios de descompresi�n y proporciona soluciones eficientes para extraer sus datos comprimidos.
Descomprimir archivo con un solo archivo
En escenarios donde un archivo contiene solo un archivo, la descompresi�n es sencilla. Puede extraer el contenido del archivo r�pidamente y con una sobrecarga m�nima, asegurando la integridad de los datos originales usando el siguiente ejemplo:
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream fs = File.OpenRead(dataDir + "CompressSingleFile_out.zip"))
3 {
4 using (Archive archive = new Archive(fs))
5 {
6 int percentReady = 0;
7 archive.Entries[0].ExtractionProgressed += (s, e) =>
8 {
9 int percent = (int)((100 * e.ProceededBytes) / ((ArchiveEntry)s).UncompressedSize);
10 if (percent > percentReady)
11 {
12 Console.WriteLine(string.Format("{0}% decompressed", percent));
13 percentReady = percent;
14 }
15 };
16 archive.Entries[0].Extract(dataDir + "alice_extracted_out.txt");
17 }
18 }Descomprimir archivo que tenga varios archivos
Cuando se trabaja con archivos que contienen varios archivos, nuestra API simplifica el proceso de iteraci�n a trav�s de las entradas y extraerlas de manera eficiente. El seguimiento del progreso basado en eventos durante la extracci�n es especialmente �til para monitorear grandes tareas de descompresi�n.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream zipFile = File.Open(dataDir + "CompressMultipleFiles_out.zip", FileMode.Open))
3 {
4 StringBuilder sb = new StringBuilder("Entries are: ");
5 int percentReady = 0;
6 using (Archive archive = new Archive(zipFile,
7 new ArchiveLoadOptions()
8 {
9 EntryListed = (s, e) => { sb.AppendFormat("{0}, ", e.Entry.Name); },
10 EntryExtractionProgressed = (s, e) =>
11 {
12 int percent = (int)((100 * e.ProceededBytes) / ((ArchiveEntry)s).UncompressedSize);
13 if (percent > percentReady)
14 {
15 Console.WriteLine(string.Format("{0}% compressed", percent)); percentReady = percent;
16 }
17 }
18 }))
19 {
20 Console.WriteLine(sb.ToString(0, sb.Length - 2));
21 using (var extracted = File.Create(dataDir + "alice_extracted_out.txt"))
22 {
23 using (var decompressed = archive.Entries[0].Open())
24 {
25 byte[] buffer = new byte[8192];
26 int bytesRead;
27 while (0 < (bytesRead = decompressed.Read(buffer, 0, buffer.Length)))
28 {
29 extracted.Write(buffer, 0, bytesRead);
30 }
31 // Read from decompressed stream to extracting file.
32 }
33 }
34 percentReady = 0;
35 archive.Entries[1].Extract(dataDir + "asyoulik_extracted_out.txt");
36 }
37 }Extraer archivo almacenado sin compresi�n
Los archivos almacenados, que contienen archivos que no han sido comprimidos, tambi�n son compatibles con la API Aspose.Zip. Si bien estos archivos no reducen el tama�o del archivo, permiten un acceso r�pido y una extracci�n eficiente de los datos almacenados. Esto es �til cuando necesita empaquetar archivos sin cambiar su estructura.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream zipFile = File.Open(dataDir + "StoreMultipleFilesWithoutCompression_out.zip", FileMode.Open))
3 {
4 using (Archive archive = new Archive(zipFile))
5 {
6 using (var extracted = File.Create(dataDir + "alice_extracted_store_out.txt"))
7 {
8 using (var decompressed = archive.Entries[0].Open())
9 {
10 byte[] buffer = new byte[8192];
11 int bytesRead;
12 while (0 < (bytesRead = decompressed.Read(buffer, 0, buffer.Length)))
13 {
14 extracted.Write(buffer, 0, bytesRead);
15 }
16 // Read from decompressed stream to extracting file.
17 }
18 }
19
20 using (var extracted = File.Create(dataDir + "asyoulik_extracted_store_out.txt"))
21 {
22 using (var decompressed = archive.Entries[1].Open())
23 {
24 byte[] buffer = new byte[8192];
25 int bytesRead;
26 while (0 < (bytesRead = decompressed.Read(buffer, 0, buffer.Length)))
27 {
28 extracted.Write(buffer, 0, bytesRead);
29 }
30 // Read from decompressed stream to extracting file.
31 }
32 }
33 }
34 }