Επισκόπηση

Η ασφάλεια των δεδομένων είναι πρωταρχικής σημασίας στο σημερινό ψηφιακό τοπίο και ένας αποτελεσματικός τρόπος για την προστασία των ευαίσθητων πληροφοριών είναι η κρυπτογράφηση. Αυτή η επισκόπηση θα σας καθοδηγήσει στον τρόπο κρυπτογράφησης ή αποκρυπτογράφησης ενός ολόκληρου αρχείου ή συγκεκριμένων εγγραφών σε αυτό, διασφαλίζοντας την εμπιστευτικότητα και την ακεραιότητα των δεδομένων σας. Το Aspose.ZIP διευκολύνει μια σειρά λειτουργιών που σχετίζονται με την κρυπτογράφηση και την αποκρυπτογράφηση αρχείων.

Πώς να κρυπτογραφήσετε ή να αποκρυπτογραφήσετε ολόκληρο το αρχείο ZIP

Κρυπτογραφήστε το αρχείο Zip με την παραδοσιακή μέθοδο

Υπάρχουν δύο διαθέσιμες μέθοδοι κρυπτογράφησης για το αρχείο ZIP: η παραδοσιακή, που θεωρείται αδύναμη τώρα και η σύγχρονη AES. Το πρότυπο ZIP επιτρέπει την κρυπτογράφηση οποιασδήποτε καταχώρησης με οποιαδήποτε από αυτές τις μεθόδους, ακόμη και μέσα στο ίδιο αρχείο. Η κρυπτογράφηση AES προσφέρει ισχυρότερη ασφάλεια και είναι διαθέσιμη σε διαφορετικά μήκη κλειδιών (128-bit, 192-bit και 256-bit). Παρέχει καλύτερη προστασία για ευαίσθητα δεδομένα μέσα σε αρχεία ZIP.

Αρχεία συμπιεσμένα με 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);
        }
    }

Κρυπτογράφηση ολόκληρου του αρχείου με τη μέθοδο 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);
            }
        }
    }

Αυτά τα δείγματα δείχνουν τον τρόπο ενσωμάτωσης παρουσιών EncryptionSetting στον αντίστοιχο Archive constructor . Αυτό επιτρέπει την επιλεκτική κρυπτογράφηση μεμονωμένων καταχωρήσεων, διατηρώντας άλλες μη κρυπτογραφημένες.

Κρυπτογραφήστε τη δεύτερη καταχώρηση από τις τρεις στο 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);
        }
    }

Αν και μπορεί να φαίνεται αντισυμβατικό, είναι πράγματι εφικτό να κρυπτογραφηθούν συγκεκριμένες καταχωρήσεις σε ένα αρχείο ZIP χρησιμοποιώντας διαφορετικές μεθόδους κρυπτογράφησης και κωδικούς πρόσβασης. Αυτή η προσέγγιση επιτρέπει μια πιο λεπτομερή και προσαρμοσμένη στρατηγική ασφαλείας, όπου μεμονωμένα αρχεία ή ομάδες αρχείων μπορούν να έχουν διαφορετικά επίπεδα προστασίας. Ωστόσο, είναι σημαντικό να σημειωθεί ότι αυτή η πρακτική μπορεί να περιπλέξει τη διαδικασία διαχείρισης και αποκρυπτογράφησης και η συμβατότητα με διάφορα εργαλεία αρχειοθέτησης ZIP μπορεί να διαφέρει.

Κρυπτογράφηση Zip με διαφορετικές μεθόδους και κωδικούς πρόσβασης

    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 σάς επιτρέπει να προσθέσετε κρυπτογράφηση σε ένα υπάρχον αρχείο χωρίς να επανασυσκευάζετε πλήρως τα περιεχόμενα. Ωστόσο, είναι σημαντικό να σημειωθεί ότι όλες οι καταχωρήσεις του αρχείου πρέπει να είναι απροστάτευτες. Διαφορετικά, θα γίνει εξαίρεση.

Κρυπτογράφηση υπάρχοντος αρχείου ZIP

    using (var archive = new Archive("plain.zip"))
    {
        archive.Save("encrypted.zip", new ArchiveSaveOptions() 
        { 
            EncryptionOptions = new AesEcryptionSettings("p@s$", EncryptionMethod.AES256)
        });
    }

Αποκρυπτογράφηση ενός αρχείου Zip

Ο χρήστης έχει την επιλογή να αποκρυπτογραφήσει είτε μια συγκεκριμένη καταχώρηση μέσα στο κρυπτογραφημένο αρχείο ZIP είτε ολόκληρο το αρχείο ως σύνολο.

Αποκρυπτογράφηση συγκεκριμένης καταχώρησης

    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);
        }
    }

Αποκρυπτογραφήστε ολόκληρο το αρχείο Zip

Σε αυτήν την περίπτωση πρέπει να δώσουμε κωδικό πρόσβασης σε έναν κατασκευαστή.

    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);
            }
        }
    }

Πώς να κρυπτογραφήσετε ή να αποκρυπτογραφήσετε το αρχείο RAR

Αποκρυπτογράφηση αρχείου RAR

Το Aspose.ZIP δεν υποστηρίζει σύνθεση αρχείων RAR, υποστηρίζει μόνο εξαγωγή. Το αρχείο RAR μπορεί να κρυπτογραφηθεί με ή χωρίς προστασία ονομάτων αρχείων.
Στην πρώτη περίπτωση, ο χρήστης πρέπει να παρέχει κωδικό αποκρυπτογράφησης στο RarArchiveLoadOptions στην αρχή της εγκατάστασης του αρχείου RAR. Στην τελευταία περίπτωση, είναι δυνατό να περάσετε τον κωδικό πρόσβασης αργότερα κατά την εξαγωγή της καταχώρισης.

Αποκρυπτογραφήστε ολόκληρο το αρχείο RAR με κρυπτογραφημένα ονόματα αρχείων

    using (RarArchive archive = new RarArchive("source.rar", 
    new RarArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
    {
        archive.ExtractToDirectory("destination");
    }

Αποκρυπτογραφήστε συγκεκριμένη καταχώρηση από το αρχείο RAR

Αυτό το δείγμα θα λειτουργούσε εάν κρυπτογραφείται μόνο το περιεχόμενο των καταχωρήσεων, αλλά όχι τα ονόματα αρχείων.

    using (RarArchive archive = new RarArchive("source.rar"))
    {
        archive.Entries[0].Extract("first_entry.bin", "p@s$");
    }

Αποκρυπτογραφήστε μια συγκεκριμένη καταχώρηση από το αρχείο RAR ως ροή

Ωστόσο, σε αυτό το δείγμα , η υπόθεση είναι ότι κρυπτογραφείται μόνο το περιεχόμενο των καταχωρήσεων και όχι τα ονόματα των αρχείων . Αυτό απαιτεί την αντιγραφή byte εισόδου σε μια ροή μνήμης.

    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);
            }
        }
    }

Πώς να κρυπτογραφήσετε ή να αποκρυπτογραφήσετε ολόκληρο το αρχείο 7ZIP

Μέθοδοι κρυπτογράφησης αρχείων αρχειοθέτησης 7z

Η μόνη επιλογή κρυπτογράφησης αρχείου 7z είναι το AES .

Κρυπτογράφηση και συμπίεση με LZMA2 ολόκληρο το αρχείο 7z

Το 7Z archives υποστηρίζει τη δυνατότητα κρυπτογράφησης κάθε καταχώρησης με τον δικό του κωδικό πρόσβασης ή αφαίρεσης απροστάτευτης.

    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);
        }
    }

Κρυπτογραφήστε τις εγγραφές του αρχείου 7z με τους δικούς σας κωδικούς πρόσβασης και αφήστε μια καταχώρηση μη κρυπτογραφημένη

Παρόμοια με το ZIP, ο χρήστης μπορεί να αποκρυπτογραφήσει είτε ολόκληρο το αρχείο είτε συγκεκριμένη καταχώρηση από αυτό.
Το αρχείο 7Z μπορεί να κρυπτογραφηθεί με ή χωρίς προστατευτικά ονόματα αρχείων. Εάν τα ονόματα αρχείων είναι κρυπτογραφημένα, θα πρέπει να δώσετε κωδικό πρόσβασης στην προετοιμασία του αρχείου .

    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);
        }
    }

Αποκρυπτογραφήστε ολόκληρο το αρχείο με κρυπτογραφημένα ονόματα αρχείων στον κατάλογο

Είτε τα ονόματα αρχείων είναι κρυπτογραφημένα είτε όχι, είναι ασφαλές να παρέχετε κωδικό πρόσβασης στον κατασκευαστή εξαγωγής.
Το παρακάτω δείγμα θα λειτουργεί μόνο όταν προστατεύεται μόνο το περιεχόμενο.

    using (SevenZipArchive archive = new SevenZipArchive("archive.7z", "p@s$")) 
    { 
        archive.ExtractToDirectory("C:\\extracted");
    }

Αποκρυπτογράφηση συγκεκριμένης καταχώρησης

    using (SevenZipArchive archive = new SevenZipArchive("archive.7z"))
    {
        archive.Entries[0].Extract("data.bin", "p@s$");
    }

Άλλες υποστηριζόμενες δυνατότητες Aspose.ZIP για .NET API

Χρησιμοποιήστε τη βιβλιοθήκη Aspose.ZIP C# για μετατροπή, συγχώνευση, επεξεργασία εγγράφων αρχείων zip, εξαγωγή δεδομένων από τα αρχεία και πολλά άλλα!

  

Support and Learning Resources

  
  

Aspose.Zip offers individual archive processing APIs for other popular development environments, listed below: