Δευτέρα, 20 Απριλίου 2015

Ο αλγόριθμος του Καίσαρα


Ας μιλήσουμε λίγο για κρυπταλγορίθμους. Ο κώδικας του Καίσαρα πήρε το όνομα του, προφανώς, από τον Ιούλιο Καίσαρα και χρησιμοποιήθηκε στην ανταλλαγή μηνυμάτων στρατιωτικής σημασίας από τους Ρωμαίους. Όμως πως λειτουργεί αυτός ο κώδικας.

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

Απλό αλφάβητο=[ABCDEFGHIJKLMNOPQRSTUVWXYZ]

Στη συνέχεια μετατοπίζουμε το αλφάβητο 3 θέσεις (ο κλασικός Καίσαρας δηλαδή με κλειδί 3) και έχουμε τα παρακάτω.

κρυπτογραφημένο αλφάβητο=[DEFGHIJKLMNOPQRSTUVWXYZABC]

Τώρα ας υποθέσουμε πως έχουμε το παρακάτω κείμενο που θέλουμε να κρυπτογραφήσουμε:

HELP I NEED BACK UP!

Για να βρούμε το πιο θα είναι το κρυπτογραφημένο κείμενο παίρνουμε το κάθε γράμμα της πρότασης και το αντιστοιχούμε στο κρυπτογραφημένο αλφάβητο. Παράδειγμα, το γράμμα H είναι το 8ο γράμμα στο Απλό Αλφάβητο και το K στο κρυπτογραφημένο (μετράμε 8 γράμματα από την αρχή του κρυπτογραφημένου αλφάβητου. Το E είναι το 5ο γράμμα στο απλό αλφάβητο και αντίστοιχα το 5ο γράμμα του κρυπτογραφημένου αλφάβητου είναι το H. Έτσι λοιπόν το τελικό κρυπτογραφημένο κείμενο που θα έχουμε είναι:

KHOS L QHHG EDFN XS
Έτσι έχουμε ένα μήνυμα που μόνο αν ξέρουμε τον αλγόριθμο και το κλειδί μπορούμε να το αποκρυπτογραφήσουμε. Η διαδικασία της αποκρυπτογράφησης είναι η ίδια με την προηγούμενη απλά αντιστοιχούμε τα γράμματα του κρυπτογραφημένου αλφάβητου στα γράμματα του απλού αλφάβητου.

Φυσικά το κλειδί μπορεί να μην είναι 3 αλλά οποιοσδήποτε ακέραιος αριθμός που φυσικά θα μετατοπίζει το κρυπτογραφημένο αλφάβητο τις ανάλογες θέσεις. Αν το κλειδί έχει μεγαλύτερο μήκος από το αλφάβητο τότε χρησιμοποιούμε την συνάρτηση modulo ώστε να περιορίσουμε το κλειδί στο μέγεθος του αλφαβήτου που έχουμε (το αγγλικό για παράδειγμα έχει 26 γράμματα.

Σε μέρες δημιουργικής βαρεμάρας αποφάσισα να υλοποιήσω τον αλγόριθμο αυτό σε πρόγραμμα γραμμένο σε γλώσσα C. Έτσι όποιος έχει όρεξη να "βασανιστεί" με τον συγκεκριμένο κρυπταλγόριθμο θα μπορούσε να επισκεφθεί το repository του προγράμματος ccrypt (εντάξει είπα δημιουργική βαρεμάρα...δεν εβρισκα καλύτερο όνομα) στο github και να παίξει.

Link για το Github: ccrypt

Περισσότερες πληροφορίες για τον κώδικα του Καίσαρα
wikipedia
youtube

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου