CRC-32B Υπολογιστής κωδικού κατακερματισμού
Δημοσιεύθηκε: 17 Φεβρουαρίου 2025 στις 6:23:51 μ.μ. UTC
Υπολογιστής κωδικού κατακερματισμού που χρησιμοποιεί τη συνάρτηση κατακερματισμού CRC-32B (Cyclic Redundancy Check 32 bit, B variant) για τον υπολογισμό ενός κωδικού κατακερματισμού με βάση την εισαγωγή κειμένου ή τη μεταφόρτωση αρχείου.CRC-32B Hash Code Calculator
Ο κυκλικός έλεγχος πλεονασμού (CRC) είναι ένας κώδικας ανίχνευσης σφαλμάτων που χρησιμοποιείται συνήθως για την ανίχνευση τυχαίων αλλαγών σε ανεπεξέργαστα δεδομένα. Αν και δεν είναι τεχνικά μια κρυπτογραφική συνάρτηση κατακερματισμού, η CRC-32 αναφέρεται συχνά ως κατακερματισμός λόγω της ικανότητάς της να παράγει έξοδο σταθερού μεγέθους (32 bit) από είσοδο μεταβλητού μήκους. Η έκδοση που παρουσιάζεται σε αυτή τη σελίδα είναι η παραλλαγή CRC-32B, η οποία είναι πραγματικά απλώς μια ιδιορρυθμία στη γλώσσα PHP που αναστρέφει τα κομμάτια γύρω (little-endian vs big-endian στο αρχικό CRC-32).
Πλήρης αποκάλυψη: Δεν έγραψα τη συγκεκριμένη υλοποίηση της συνάρτησης κατακερματισμού που χρησιμοποιείται σε αυτή τη σελίδα. Πρόκειται για μια τυπική συνάρτηση που περιλαμβάνεται στη γλώσσα προγραμματισμού PHP. Έφτιαξα μόνο τη διαδικτυακή διεπαφή για να την κάνω δημόσια διαθέσιμη εδώ για λόγους ευκολίας.
Σχετικά με τον αλγόριθμο κατακερματισμού CRC-32B
Δεν είμαι μαθηματικός, αλλά θα προσπαθήσω να εξηγήσω αυτή τη συνάρτηση κατακερματισμού με μια απλή αναλογία. Σε αντίθεση με πολλές από τις κρυπτογραφικές συναρτήσεις κατακερματισμού, δεν είναι ένας ιδιαίτερα περίπλοκος αλγόριθμος, οπότε πιθανότατα θα είναι εντάξει ;-)
Φανταστείτε ότι στέλνετε μια επιστολή μέσω ταχυδρομείου, αλλά ανησυχείτε ότι μπορεί να καταστραφεί πριν φτάσει στον παραλήπτη. Με βάση το περιεχόμενο της επιστολής, υπολογίζετε ένα άθροισμα ελέγχου CRC-32 και το γράφετε στο φάκελο. Όταν ο παραλήπτης λάβει την επιστολή, μπορεί επίσης να υπολογίσει το άθροισμα ελέγχου και να δει αν ταιριάζει με αυτό που γράψατε. Εάν ναι, το γράμμα δεν καταστράφηκε ούτε άλλαξε στην πορεία.
Ο τρόπος με τον οποίο το CRC-32 το κάνει αυτό είναι μια διαδικασία τεσσάρων βημάτων:
Βήμα 1: Προσθέστε λίγο επιπλέον χώρο (επένδυση)
- Το CRC προσθέτει λίγο επιπλέον χώρο στο τέλος του μηνύματος (όπως η συσκευασία φιστικιών σε ένα κουτί).
- Αυτό το βοηθά να εντοπίζει σφάλματα πιο εύκολα.
Βήμα 2: Ο μαγικός χάρακας (το πολυώνυμο)
- Το CRC-32 χρησιμοποιεί έναν ειδικό "μαγικό χάρακα" για τη μέτρηση των δεδομένων.
- Σκεφτείτε αυτόν τον χάρακα σαν ένα μοτίβο από χτυπήματα και αυλακώσεις (αυτό είναι το πολυώνυμο, αλλά μην ανησυχείτε για αυτή τη λέξη).
- Ο πιο συνηθισμένος "χάρακας" για το CRC-32 είναι ένα σταθερό μοτίβο.
Βήμα 3: Ολίσθηση του χάρακα (διαδικασία διαίρεσης)
- Τώρα το CRC ολισθαίνει το χάρακα κατά μήκος του μηνύματος.
- Σε κάθε σημείο, ελέγχει εάν ευθυγραμμίζονται τα εξογκώματα και οι αυλακώσεις.
- Εάν δεν ευθυγραμμιστούν, το CRC σημειώνει (αυτό γίνεται χρησιμοποιώντας απλό XOR, όπως το γύρισμα ή απενεργοποίηση διακοπτών).
- Συνεχίζει να ολισθαίνει και να γυρίζει διακόπτες μέχρι να φτάσει στο τέλος.
Βήμα 4: Το τελικό αποτέλεσμα (το άθροισμα ελέγχου)
- Αφού σύρετε το χάρακα σε ολόκληρο το μήνυμα, σας μένει ένας μικρός αριθμός (μήκους 32 bit) που αντιπροσωπεύει τα αρχικά δεδομένα.
- Αυτός ο αριθμός είναι σαν ένα μοναδικό δακτυλικό αποτύπωμα για το μήνυμα.
- Αυτό είναι το άθροισμα ελέγχου CRC-32.
Η έκδοση που παρουσιάζεται στη σελίδα είναι η παραλλαγή CRC-32B, η οποία είναι ως επί το πλείστον μια ιδιορρυθμία PHP που αλλάζει τη σειρά bit γύρω (little-endian vs big-endian). Θα πρέπει πιθανώς να χρησιμοποιήσετε αυτήν την έκδοση μόνο εάν χρειάζεστε συγκεκριμένα συμβατότητα με άλλη εφαρμογή PHP που τη χρησιμοποιεί.
Έχω αριθμομηχανές και για τις άλλες παραλλαγές: