Διαδρομές
/
Odin
Odin
/
Ασκήσεις
/
Απλό κρυπτοσύστημα
Απλό κρυπτοσύστημα

Απλό κρυπτοσύστημα

Εύκολο

Οδηγίες

Δημιούργησε μια υλοποίηση του κρυπτογραφήματος Vigenère. Το κρυπτογράφημα Vigenère είναι ένα απλό κρυπτογράφημα αντικατάστασης.

Ορολογία κρυπτογράφησης

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

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

Λεπτομέρειες κωδικοποίησης

Σε αυτό το κρυπτογράφημα, το κλειδί είναι μια σειρά από πεζά γράμματα, όπως "abcd". Κάθε γράμμα του απλού κειμένου μετατοπίζεται ή περιστρέφεται κατά μια απόσταση που βασίζεται σε ένα αντίστοιχο γράμμα του κλειδιού. Ένα "a" στο κλειδί σημαίνει μετατόπιση 0 (δηλαδή καμία μετατόπιση). Ένα "b" στο κλειδί σημαίνει μετατόπιση 1. Ένα "c" στο κλειδί σημαίνει μετατόπιση 2, και ούτω καθεξής.

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

Αν το κλειδί περιέχει μόνο ένα γράμμα, όπως "dddddd", τότε όλα τα γράμματα του απλού κειμένου μετατοπίζονται κατά την ίδια ποσότητα (τρία σε αυτό το παράδειγμα), κάτι που θα το έκανε ίδιο με ένα κυκλικό κρυπτογράφημα ή κρυπτογράφημα μετατόπισης (που μερικές φορές ονομάζεται κρυπτογράφημα του Καίσαρα). Για παράδειγμα, το απλό κείμενο "iamapandabear" θα γινόταν "ldpdsdqgdehdu".

Αν το κλειδί περιέχει μόνο το γράμμα "a" (μία ή περισσότερες φορές), η απόσταση μετατόπισης είναι μηδέν και το κρυπτοκείμενο είναι ίδιο με το απλό κείμενο.

Συνήθως όμως το κλειδί είναι πιο περίπλοκο από αυτό! Αν το κλειδί είναι "abcd", τότε τα γράμματα του απλού κειμένου θα μετατοπίζονταν κατά απόσταση 0, 1, 2 και 3. Αν το απλό κείμενο είναι "hello", χρειαζόμαστε 5 μετατοπίσεις, οπότε το κλειδί θα επαναληφθεί κυκλικά, δίνοντας αποστάσεις μετατόπισης 0, 1, 2, 3 και 0. Εφαρμόζοντας αυτές τις μετατοπίσεις στα γράμματα του "hello" παίρνουμε "hfnoo".

Τυχαία κλειδιά

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

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Odin Exercism

Έτοιμος να ξεκινήσεις την άσκηση Απλό κρυπτοσύστημα;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Odin με 73 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.