Διαδρομές
/
Julia
Julia
/
Ασκήσεις
/
Κρυπτογράφηση με περιστροφή
Κρυπτογράφηση με περιστροφή

Κρυπτογράφηση με περιστροφή

Εύκολο

Οδηγίες

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

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

Ο γενικός συμβολισμός για τα κρυπτογραφήματα περιστροφής είναι ROT + <key>. Το πιο συνηθισμένο κρυπτογράφημα περιστροφής είναι το ROT13.

Ένα ROT13 στο λατινικό αλφάβητο θα ήταν ως εξής:

Plain:  abcdefghijklmnopqrstuvwxyz
Cipher: nopqrstuvwxyzabcdefghijklm

Είναι ισχυρότερο από το κρυπτογράφημα Atbash, γιατί έχει 27 πιθανά κλειδιά και 25 χρησιμοποιήσιμα κλειδιά.

Το κρυπτοκείμενο γράφεται με την ίδια μορφοποίηση όπως η είσοδος, συμπεριλαμβανομένων των κενών και της στίξης.

Παραδείγματα

  • Το ROT5 omg δίνει trl
  • Το ROT0 c δίνει c
  • Το ROT26 Cool δίνει Cool
  • Το ROT13 The quick brown fox jumps over the lazy dog. δίνει Gur dhvpx oebja sbk whzcf bire gur ynml qbt.
  • Το ROT13 Gur dhvpx oebja sbk whzcf bire gur ynml qbt. δίνει The quick brown fox jumps over the lazy dog.

Αυτή είναι μια καλή άσκηση για να πειραματιστείς με μη τυπικά κυριολεκτικά συμβολοσειρών και μεταπρογραμματισμό.

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

Μπορείς να επεκτείνεις τη λύση σου προσθέτοντας τη λειτουργικότητα που περιγράφεται παρακάτω.

Το Μπόνους A απαιτεί μόνο τα βασικά όπως περιγράφονται στο άρθρο ιστολογίου. Το Μπόνους B απαιτεί σημαντικά περισσότερες γνώσεις μεταπρογραμματισμού στη Julia.

Μπόνους A

Υλοποίησε ένα κυριολεκτικό συμβολοσειράς που λειτουργεί ως ROT13 στη συμβολοσειρά:

R13"abcdefghijklmnopqrstuvwxyz" == "nopqrstuvwxyzabcdefghijklm"

Μπόνους B

Υλοποίησε κυριολεκτικά συμβολοσειρών R<i>, i = 0, ..., 26, που μετατοπίζουν τη συμβολοσειρά για τιμές i:

R0"Hello, World!" == "Hello, World!"
R4"Testing 1 2 3 testing" == "Xiwxmrk 1 2 3 xiwxmrk"
R13"abcdefghijklmnopqrstuvwxyz" == "nopqrstuvwxyzabcdefghijklm"

Πηγή

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

Έτοιμος να ξεκινήσεις την άσκηση Κρυπτογράφηση με περιστροφή;

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