Το CRC είναι ένας μικρός αριθμός που υπολογίζεται από τα περιεχόμενα ενός αρχείου τη στιγμή που προστίθεται σε ένα αρχείο-συμπίεσης. Λειτουργεί σαν δακτυλικό αποτύπωμα, ώστε το αρχείο να μπορεί αργότερα να ελεγχθεί και να επιβεβαιωθεί ότι βγήκε από το αρχείο-συμπίεσης ακριβώς όπως μπήκε. CRC είναι τα αρχικά του cyclic redundancy check (κυκλικός έλεγχος πλεονασμού).
Από πού προέρχεται και ποια αρχεία το έχουν
Τα αρχεία συμπίεσης το περιέχουν. Αυτό σημαίνει ότι τα αρχεία ZIP και οι πολλοί τύποι που βασίζονται στο ZIP, όπως .docx, .xlsx, .epub, .jar και .apk, το έχουν, ενώ τα RAR, 7z και άλλοι τύποι κρατούν δικά τους checksums. Μια αναφορά μπορεί να μην το εμφανίσει για αρχεία .epub, παρόλο που το αρχείο το αποθηκεύει.
Το πρόγραμμα συμπίεσης υπολογίζει την τιμή πάνω στο αρχικό, μη συμπιεσμένο περιεχόμενο του αρχείου και την αποθηκεύει δίπλα σε αυτήν την εγγραφή, ώστε κάθε μέλος ενός αρχείου-συμπίεσης να έχει το δικό του CRC. Δεν μπορείτε να το επιλέξετε ή να το πληκτρολογήσετε, και δεν είναι πληροφορία για εσάς ή τον υπολογιστή σας. Προκύπτει αποκλειστικά από τα bytes του αρχείου.
Ο λόγος που αποθηκεύεται είναι η σύγκριση που γίνεται αργότερα. Όταν το αρχείο-συμπίεσης αποσυμπιεστεί, το πρόγραμμα υπολογίζει ξανά το CRC από αυτό που μόλις εξήγαγε και συγκρίνει τις δύο τιμές. Αν διαφέρουν, εμφανίζεται το γνωστό μήνυμα σφάλματος CRC στο WinZip, το 7-Zip ή το unzip, το οποίο σημαίνει ότι το εξαγόμενο αρχείο δεν ταιριάζει με αυτό που προστέθηκε αρχικά. Αυτό υποδεικνύει κάποια ζημιά στην πορεία: μια διακοπείσα λήψη, έναν δίσκο που χαλάει, ένα αντίγραφο που κόπηκε στη μέση. Ένα και μόνο κατεστραμμένο μέλος αρκεί για να εμφανιστεί το μήνυμα, ακόμα κι αν όλα τα υπόλοιπα στο αρχείο-συμπίεσης είναι εντάξει.
Πώς φαίνεται η τιμή
Το ZIP χρησιμοποιεί μια παραλλαγή που ονομάζεται CRC-32, η οποία παράγει έναν αριθμό 32-bit. Συνήθως εμφανίζεται ως οκτώ δεκαεξαδικά ψηφία, για παράδειγμα 0x8f3d2b1c, και ορισμένα εργαλεία εμφανίζουν ακριβώς την ίδια τιμή αντ' αυτού ως έναν μεγάλο δεκαδικό αριθμό. Δεν υπάρχει μονάδα, ούτε κλίμακα στην οποία μια τιμή είναι καλύτερη ή χειρότερη. Ένα κενό αρχείο, και μια εγγραφή φακέλου που δεν περιέχει δεδομένα, εμφανίζει 0x00000000.
Γιατί έχει σημασία
Πρόκειται για ένα πεδίο ακεραιότητας και είναι η ενσωματωμένη απόδειξη του ίδιου του αρχείου-συμπίεσης ότι το περιεχόμενο επέζησε από την αποθήκευση και τη μεταφορά. Η εμφάνιση ενός CRC σε μια αναφορά μεταδεδομένων δεν σημαίνει ότι υπάρχει κάποιο πρόβλημα με το αρχείο-συμπίεσής σας. Είναι απλώς η τιμή που καταγράφηκε όταν δημιουργήθηκε το αρχείο-συμπίεσης· ο πραγματικός έλεγχος γίνεται όταν εξάγετε, όχι όταν κοιτάζετε.
Έχει και μια χρήσιμη παράπλευρη χρήση. Ταυτόσημο περιεχόμενο παράγει πάντα ταυτόσημο CRC, οπότε δύο εγγραφές με το ίδιο CRC και το ίδιο μέγεθος είναι σχεδόν σίγουρα το ίδιο αρχείο, κάτι που το κάνει έναν γρήγορο τρόπο εντοπισμού διπλότυπων μέσα σε ένα μεγάλο αρχείο-συμπίεσης.
Αυτό που δεν είναι, είναι λειτουργία ασφαλείας. Ένα CRC έχει σχεδιαστεί για να εντοπίζει τυχαίες φθορές, και είναι τόσο μικρό ώστε μια ταυτόσημη τιμή μπορεί να επιτευχθεί επίτηδες, άρα ένα CRC που «βγαίνει σωστό» δεν αποδεικνύει ότι κανείς δεν έχει τροποποιήσει το αρχείο. Για αυτήν τη δουλειά υπάρχουν κρυπτογραφικά hashes όπως το SHA-256. Επειδή η τιμή προκύπτει από το περιεχόμενο, μπορεί επίσης να χρησιμοποιηθεί για να διαπιστωθεί αν δύο διαφορετικά αρχεία-συμπίεσης περιέχουν το ίδιο αρχείο, κάτι που είναι μερικές φορές χρήσιμο και μερικές φορές αξίζει να το θυμάστε πριν παραδώσετε ένα αρχείο-συμπίεσης.