ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ

Το Aspose.ZIP διευκολύνει μια σειρά από λειτουργίες κρυπτογράφησης και αποκρυπτογράφησης για αρχεία. Χρησιμοποιώντας το Aspose.Zip API για το Python.NET, μπορείτε να κρυπτογραφήσετε και να αποκρυπτογραφήσετε αποτελεσματικά τα αρχεία ZIP, RAR και 7-Zip.

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

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

Ξεκλειδώστε το ZIP με τη μέθοδο Deflate

    with open("archive.zip", 'x') as zip_file:
        with open("alice29.txt") as source:
            method =  zp.saving.CompressionSettings.deflate
            encryption = zp.saving.TraditionalEncryptionSettings("p@s$S")
            archive = zp.Archive(zp.saving.ArchiveEntrySettings(method, encryption))
            archive.create_entry("alice29.txt", source)
            archive.save(zip_file)

Ο κώδικας δημιουργεί ένα νέο αρχείο ZIP με το όνομα archive.zip, συμπιέζει το περιεχόμενο του alice29.txt χρησιμοποιώντας τη μέθοδο συμπίεσης Deflate, το κρυπτογραφεί με την παραδοσιακή μέθοδο κρυπτογράφησης ZIP χρησιμοποιώντας τον κωδικό πρόσβασης "p@s$S" και αποθηκεύει το συμπιεσμένο και κρυπτογραφημένο αρχείο στο νέο αρχείο ZIP που δημιουργήθηκε.

Κρυπτογράφηση ZIP με AES

    with open("archive.zip", 'x') as zip_file:
        with open("alice29.txt") as source:
            method =  zp.saving.CompressionSettings.deflate
            encryption = zp.saving.AesEcryptionSettings("p@s$S", zp.saving.EncryptionMethod.AES256)
            archive = zp.Archive(zp.saving.ArchiveEntrySettings(method, encryption))
            archive.create_entry("alice29.txt", source)
            archive.save(zip_file)

Ο παρεχόμενος κώδικας δείχνει πώς να δημιουργήσετε ένα αρχείο ZIP με το όνομα archive.zip, να συμπιέσετε ένα αρχείο alice29.txt χρησιμοποιώντας τη μέθοδο συμπίεσης Deflate και να το κρυπτογραφήσετε με κρυπτογράφηση AES-256 χρησιμοποιώντας τον κωδικό πρόσβασης "p@s$S". Για αυτά τα δείγματα παρέχαμε περιπτώσεις EncryptionSetting εντός του αντίστοιχου Archive constructor . Είναι δυνατή η εφαρμογή κρυπτογράφησης για συγκεκριμένη καταχώρηση αφήνοντας άλλες απροστάτευτες.
Αυτό δείχνει την ευελιξία της εφαρμογής κρυπτογράφησης σε συγκεκριμένες καταχωρήσεις μέσα σε ένα αρχείο ZIP, επιτρέποντας σε διαφορετικά αρχεία να έχουν διαφορετικά επίπεδα προστασίας. Αυτή η προσέγγιση επιτρέπει μια πιο λεπτομερή και προσαρμοσμένη στρατηγική ασφαλείας, όπου μεμονωμένα αρχεία ή ομάδες αρχείων μπορούν να έχουν διαφορετικά επίπεδα προστασίας. Ωστόσο, είναι σημαντικό να σημειωθεί ότι αυτή η πρακτική μπορεί να περιπλέξει τη διαδικασία διαχείρισης και αποκρυπτογράφησης και η συμβατότητα με διάφορα εργαλεία αρχειοθέτησης ZIP μπορεί να διαφέρει.

Κρυπτογραφήστε το ZIP τη δεύτερη καταχώρηση των τριών

    with open("archive.zip", 'x') as zip_file:
        encrypted_entry = zp.saving.ArchiveEntrySettings(None, zp.saving.AesEcryptionSettings("p@s$", zp.saving.EncryptionMethod.AES256))
        with zp.Archive as archive:
            archive.create_entry("alice29.txt", "alice29.txt")
            archive.create_entry("asyoulik.txt", "asyoulik.txt", false, encrypted_entry)
            archive.create_entry("fields.c", "fields.c")
            archive.save(zip_file)

Αυτός ο κώδικας δείχνει τη δημιουργία ενός αρχείου ZIP που προστατεύεται με κωδικό πρόσβασης στην Python. Προσθέτει τρία αρχεία: alice29.txt, asyoulik.txt και fields.c.
Δείτε πώς λειτουργεί:
Ανοίγει ή δημιουργεί ένα αρχείο για το αρχείο ZIP με βάση το όνομα που είναι αποθηκευμένο στο this.resultFile. Δημιουργεί αντικείμενα FileInfo για να αντιπροσωπεύει τα αρχεία που θα προστεθούν. Δημιουργεί ένα νέο αντικείμενο αρχειοθέτησης.
Προσθέτει αρχεία: Το alice29.txt και το fields.c προστίθενται στο αρχείο χωρίς ειδικές ρυθμίσεις. Το asyoulik.txt προστίθεται με κρυπτογράφηση AES-256, απαιτώντας τον κωδικό πρόσβασης p@s$ για αποκρυπτογράφηση. Αποθηκεύει το ολοκληρωμένο αρχείο στο καθορισμένο αρχείο.

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

    with open("archive.zip", 'x') as zip_file:
        encrypted_1 = zp.saving.ArchiveEntrySettings(None, zp.saving.AesEcryptionSettings("p@s$1", zp.saving.EncryptionMethod.AES256))
        encrypted_2 = zp.saving.ArchiveEntrySettings(None, zp.saving.TraditionalEncryptionSettings("p@s$2"))
        encrypted_3 = zp.saving.ArchiveEntrySettings(None, zp.saving.AesEcryptionSettings("p@s$3", zp.saving.EncryptionMethod.AES128))
        with zp.Archive as archive:
            archive.create_entry("alice29.txt", "alice29.txt", false, encrypted_1)
            archive.create_entry ("asyoulik.txt", "asyoulik.txt", false, encrypted_2)
            archive.create_entry("fields.c", "fields.c", false, encrypted_3)
            archive.save(zip_file)

Αυτό το απόσπασμα κώδικα δείχνει τη δημιουργία ενός αρχείου ZIP στην Python όπου μεμονωμένα αρχεία κρυπτογραφούνται με διαφορετικές μεθόδους και κωδικούς πρόσβασης. Δείτε πώς λειτουργεί:
Ρύθμιση αρχείου: Ανοίγει ή δημιουργεί ένα αρχείο για το αρχείο ZIP με βάση το όνομα που είναι αποθηκευμένο στο this.resultFile. Δημιουργεί αντικείμενα FileInfo που αντιπροσωπεύουν τα αρχεία που θα προστεθούν: alice29.txt, asyoulik.txt και fields.c.
Δημιουργία αρχείου: Δημιουργεί ένα νέο αντικείμενο αρχειοθέτησης (αρχείο).
Προσθήκη κρυπτογραφημένων αρχείων: Ο κώδικας χρησιμοποιεί έναν βρόχο για να επαναλάβει τα αρχεία και να τα προσθέσει στο αρχείο με συγκεκριμένες ρυθμίσεις κρυπτογράφησης:
alice29.txt - Αυτό το αρχείο προστίθεται με ** Κρυπτογράφηση AES-256** και απαιτεί τον κωδικό πρόσβασης "p@s" για αποκρυπτογράφηση.
asyoulik.txt - Αυτό το αρχείο προστίθεται με μια διαφορετική μέθοδο κρυπτογράφησης που ονομάζεται Παραδοσιακή Κρυπτογράφηση. Χρησιμοποιεί επίσης έναν ξεχωριστό κωδικό πρόσβασης, "p@s", για αποκρυπτογράφηση.
fields.c - Αυτό το αρχείο προστίθεται ξανά με κρυπτογράφηση AES-128, αλλά με διαφορετικό κωδικό πρόσβασης, "p@s$3", για αποκρυπτογράφηση.
Αποθήκευση του αρχείου: Τέλος, ο κώδικας αποθηκεύει το ολοκληρωμένο αρχείο που περιέχει τα κρυπτογραφημένα αρχεία στο καθορισμένο αρχείο.

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

    with zp.Archive("plain.zip") as archive:
        save_options = zp.saving.ArchiveSaveOptions()
        save_options.encryption_options = zp.saving.AesEcryptionSettings("p@s$", zp.saving.EncryptionMethod.AES256)
        archive.save("encrypted.zip",  save_options)

Αυτός ο κώδικας παίρνει ένα υπάρχον αρχείο ZIP plain.zip, κρυπτογραφεί τα περιεχόμενά του χρησιμοποιώντας το AES-256 με τον κωδικό πρόσβασης p@s$ και αποθηκεύει την κρυπτογραφημένη έκδοση ως νέο αρχείο με το όνομα encrypted.zip.

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

Αποκρυπτογράφηση αρχείου ZIP με κωδικό πρόσβασης

    with zp.Archive("source.zip") as archive:
        archive.entries[0].extract("first_entry.bin", "p@s$")

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

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

    load_options = zp.ArchiveLoadOptions()
    load_options.decryption_password = "p@s$S"
    with zp.Archive("source.zip", load_options) as archive:
        archive.extract_to_directory("destination")

Αυτός ο απλός κώδικας παίρνει ένα αρχείο ZIP που προστατεύεται με κωδικό πρόσβασης "source.zip", χρησιμοποιεί τον παρεχόμενο κωδικό πρόσβασης "p@s$S" για αποκρυπτογράφηση και εξάγει όλο το περιεχόμενό του σε έναν καθορισμένο φάκελο "προορισμός".

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

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

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

    load_options = zp.rar.RarArchiveLoadOptions()
    load_options.decryption_password = "p@s$S"
    with zp.rar.RarArchive("source.rar", load_options) as archive:
        archive.extract_to_directory("destination")

Ουσιαστικά, αυτός ο κώδικας λειτουργεί παρόμοια με το παράδειγμα ZIP, αλλά λειτουργεί ειδικά για αρχεία RAR. Παίρνει ένα αρχείο RAR που προστατεύεται με κωδικό πρόσβασης "source.rar", χρησιμοποιεί τον παρεχόμενο κωδικό πρόσβασης "p@s$S" για αποκρυπτογράφηση και εξάγει όλο το περιεχόμενό του σε έναν καθορισμένο φάκελο "προορισμός".

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

    with zp.rar.RarArchive("source.rar") as archive:
        archive.entries[0].extract("first_entry.bin", "p@s$S")

Αυτός ο κώδικας ανοίγει το αρχείο source.rar RAR, αποκρυπτογραφεί και εξάγει την πρώτη καταχώρηση του αρχείου χρησιμοποιώντας τον κωδικό πρόσβασης "p@s$S" και την αποθηκεύει στο αρχείο first_entry.bin. Αυτό το δείγμα θα λειτουργούσε εάν κρυπτογραφείται μόνο το περιεχόμενο των καταχωρήσεων, αλλά όχι τα ονόματα αρχείων.

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

    with io.FileIO("file.bin", "xb") as destination:
        with zp.rar.RarArchive("source.rar") as archive:
            with archive.entries[0].open("p@s$S") as source:
                destination.write(source.readall())

Αυτός ο κώδικας ανοίγει το αρχείο RAR source.rar, αποκρυπτογραφεί τη δεύτερη εγγραφή του αρχείου χρησιμοποιώντας τον κωδικό πρόσβασης "p@s$S" και διαβάζει το περιεχόμενό του σε μια ByteArrayOutputStream. Χρησιμοποιώντας ένα buffer ανάγνωσης, ο κώδικας εξασφαλίζει σταδιακή μεταφορά δεδομένων, η οποία βοηθά στην αποτελεσματική διαχείριση μεγάλων αρχείων. Αυτό το δείγμα θα λειτουργούσε εάν κρυπτογραφείται μόνο το περιεχόμενο των καταχωρήσεων, αλλά όχι τα ονόματα αρχείων. Σε αυτό το δείγμα καταχώρισης byte αντιγράφονται στη ροή μνήμης.

Κρυπτογράφηση 7zip με aes 256

Η μόνη επιλογή κρυπτογράφησης αρχείου 7z είναι το AES . Το αρχείο χρησιμοποιεί συμπίεση LZMA2 για αποτελεσματική μείωση του μεγέθους του αρχείου και κρυπτογράφηση AES με τον κωδικό πρόσβασης για πρόσθετη ασφάλεια. Ο κώδικας επαναλαμβάνεται μέσω των αρχείων και τα προσθέτει στο αρχείο χρησιμοποιώντας τη μέθοδο CreateEntry.

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

    with open("archive.7z", 'xb') as sz_file:
        compression = zp.saving.SevenZipLZMA2CompressionSettings()
        encryption = zp.saving.SevenZipAESEncryptionSettings("p@s$S")
        entry_settings = zp.saving.SevenZipEntrySettings(compression, encryption) 
        with zp.sevenzip.SevenZipArchive(entry_settings) as archive:
            archive.create_entry("alice29.txt", "alice29.txt")
            archive.create_entry("asyoulik.txt", "asyoulik.txt")
            archive.create_entry("fields.c", "fields.c")
            archive.save(sz_file)

Αυτός ο κώδικας δημιουργεί ένα κρυπτογραφημένο αρχείο 7z που περιέχει τρία αρχεία: alice29.txt, asyoulik.txt και fields.c. Το αρχείο χρησιμοποιεί συμπίεση LZMA2 και κρυπτογράφηση AES με τον κωδικό πρόσβασης "p@s$S". Τα αρχεία προστίθενται στο αρχείο χρησιμοποιώντας τη μέθοδο CreateEntry και το ίδιο το αρχείο αποθηκεύεται στο αρχείο archive.7z που δημιουργήθηκε.

7z Κρυπτογράφηση με κωδικό πρόσβασης

    with open("archive.7z", 'xb') as sz_file:
        compression = zp.saving.SevenZipLZMA2CompressionSettings()
        entry_pass1 = zp.saving.SevenZipEntrySettings(compression, zp.saving.SevenZipAESEncryptionSettings("p@s$S"))
        entry_pass2 = zp.saving.SevenZipEntrySettings(compression, zp.saving.SevenZipAESEncryptionSettings("$ecret"))
        with zp.sevenzip.SevenZipArchive(entry_settings) as archive:
            archive.create_entry("alice29.txt", "alice29.txt")
            archive.create_entry("asyoulik.txt", "asyoulik.txt", false, entry_pass1)
            archive.create_entry("fields.c", "fields.c", false, entry_pass2)
            archive.save(sz_file)

Αυτός ο κώδικας δημιουργεί ένα κρυπτογραφημένο αρχείο 7z που περιέχει τρία αρχεία: alice29.txt, asyoulik.txt και fields.c. Το πρώτο αρχείο προστίθεται στο αρχείο χωρίς ειδικές ρυθμίσεις. Το δεύτερο αρχείο επισυνάπτεται χρησιμοποιώντας συμπίεση LZMA2 και κρυπτογράφηση AES με τον κωδικό πρόσβασης "p@s$S". Το τρίτο αρχείο επισυνάπτεται χρησιμοποιώντας συμπίεση LZMA2 και κρυπτογράφηση AES με τον κωδικό πρόσβασης "$ecret". Τέλος, το αρχείο αποθηκεύεται στο αρχείο archive.7z.
Παρόμοια με το ZIP, ο χρήστης μπορεί να αποκρυπτογραφήσει είτε ολόκληρο το αρχείο είτε συγκεκριμένη καταχώρηση από αυτό. Το αρχείο 7Z μπορεί να κρυπτογραφηθεί με ή χωρίς προστατευτικά ονόματα αρχείων. Εάν τα ονόματα αρχείων είναι κρυπτογραφημένα, πρέπει να δώσετε κωδικό πρόσβασης στο archive instantiation .

Αποκρυπτογράφηση αρχείων 7ZIP

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

    with zp.sevenzip.SevenZipArchive("archive.7z", "p@s$S") as archive: 
        archive.extract_to_directory("c:\extracted")

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

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

with zp.sevenzip.SevenZipArchive("archive.7z") as archive:
    archive.entries[0].extract("data.bin", "p@s$S")

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

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

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

  
  

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