Πρόγραμμα Python για εύρεση κατακερματισμού αρχείου

Σε αυτό το άρθρο, θα μάθετε να βρίσκετε τον κατακερματισμό ενός αρχείου και να το εμφανίζετε.

Για να κατανοήσετε αυτό το παράδειγμα, θα πρέπει να γνωρίζετε τις ακόλουθες θεματολογίες προγραμματισμού Python:

  • Λειτουργίες Python
  • Λειτουργίες καθορισμένες από τον χρήστη Python
  • Αρχείο Python I / O

Οι λειτουργίες κατακερματισμού λαμβάνουν μια αυθαίρετη ποσότητα δεδομένων και επιστρέφουν μια συμβολοσειρά bit σταθερού μήκους. Η έξοδος της συνάρτησης ονομάζεται μήνυμα σύνοψης.

Χρησιμοποιούνται ευρέως στην κρυπτογραφία για σκοπούς ελέγχου ταυτότητας. Υπάρχουν πολλές λειτουργίες κατακερματισμού όπως MD5, SHA-1 κ.λπ. Ανατρέξτε σε αυτήν τη σελίδα για να μάθετε περισσότερα σχετικά με τις λειτουργίες κατακερματισμού στην κρυπτογραφία.

Σε αυτό το παράδειγμα, θα επεξηγήσουμε τον τρόπο κατακερματισμού ενός αρχείου. Θα χρησιμοποιήσουμε τον αλγόριθμο κατακερματισμού SHA-1. Η πέψη του SHA-1 έχει μήκος 160 bit.

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

Πηγαίος κώδικας για εύρεση κατακερματισμού

 # Python rogram to find the SHA-1 message digest of a file # importing the hashlib module import hashlib def hash_file(filename): """"This function returns the SHA-1 hash of the file passed into it""" # make a hash object h = hashlib.sha1() # open file for reading in binary mode with open(filename,'rb') as file: # loop till the end of the file chunk = 0 while chunk != b'': # read only 1024 bytes at a time chunk = file.read(1024) h.update(chunk) # return the hex representation of digest return h.hexdigest() message = hash_file("track1.mp3") print(message) 

Παραγωγή

 633d7356947eec543c50b76a1852f92427f4dca9 

Σε αυτό το πρόγραμμα, ανοίγουμε το αρχείο σε δυαδική λειτουργία. Οι λειτουργίες κατακερματισμού είναι διαθέσιμες στη hashlibμονάδα. Κάνουμε βρόχο μέχρι το τέλος του αρχείου χρησιμοποιώντας έναν whileβρόχο. Φτάνοντας στο τέλος, παίρνουμε κενό αντικείμενο bytes.

Σε κάθε επανάληψη, διαβάζουμε μόνο 1024 byte (αυτή η τιμή μπορεί να αλλάξει σύμφωνα με την επιθυμία μας) από το αρχείο και ενημερώνουμε τη λειτουργία κατακερματισμού.

Τέλος, επιστρέφουμε το μήνυμα σύνοψης σε δεκαεξαδική αναπαράσταση χρησιμοποιώντας τη hexdigest()μέθοδο.

ενδιαφέροντα άρθρα...