[Παίζει μουσική] ZAMYLA CHAN: Ας εφαρμόσουν Vigenere, μια ελαφρώς πιο εξασφαλίσει cipher από Caesar. Το απλό κείμενο είναι κρυπτογραφημένη με χρήση μια σειρά αντί του ακεραίου. Κάθε αλφαβητικό χαρακτήρα απλό κείμενο μετατοπίζεται από μια γράμμα τη λέξη-κλειδί. Σε αυτό το παράδειγμα, η λέξη-κλειδί Ohai, O αντιστοιχεί σε μία μετατόπιση 14? Η Σε μετατόπιση των 7? Α, μετατόπιση 0? Και εγώ μια μετατόπιση των 8. Αν έχετε εφαρμοστεί με επιτυχία σας Caesar cipher, αυτό θα είναι ένα ωραίο πλαίσιο από το οποίο μπορείτε μπορεί να εφαρμόσει Vigenere. Όπως μπορείτε να δείτε, τρέχει ένα Vigenere cipher με ένα χαρακτήρα ως λέξη-κλειδί είναι το ίδιο πράγμα ως κρυπτογράφησης του Καίσαρα. Τα ίδια μέτρα ισχύουν για Vigenere όπως έκαναν στο Caesar. Η λέξη-κλειδί είναι η δεύτερη γραμμή εντολών επιχείρημα, έτσι ώστε να έχουν πρόσβαση με argv1. Στη συνέχεια, θα πρέπει να βεβαιωθείτε ότι το κλειδί λέξη είναι πράγματι όλα αλφαβητική σειρά. Εδώ είναι όπου είναι η άλφα μπορεί να έρθει σε πρακτικό. Αν έχετε μια έγκυρη λέξη-κλειδί, μπορείτε να πάρετε το δύναμη από το χρήστη, και στη συνέχεια είστε έτοιμοι να encipher. Ο τύπος κρυπτογράφησης Vigenere είναι παρόμοια στον Καίσαρα τύπο, εκτός από τώρα k γίνεται k δείκτη j, υποδεικνύοντας η j-th επιστολή των λέξεων-κλειδιών. Ας βήμα μέσα από αυτή τη διαδικασία. Ας πούμε ότι ήθελε να στείλει ένα μήνυμα για να σας συντριβή, σας συμπαθώ, αλλά δεν έχετε θέλουν όλοι να γνωρίζουν. Έτσι, μπορείτε να χρησιμοποιήσετε ένα Vigenere κρυπτογράφηση με το panda-κλειδί, επειδή, καλά, μπορείτε επίσης να όπως pandas. Το πρώτο γράμμα, εγώ, θα μετατοπιστεί από p, δίνοντας x, 15 γράμματα αφού, γιατί 15 p είναι η 16η γράμμα της αλφαβήτου. Το επόμενο γράμμα του απλού κειμένου είναι ένα διάστημα, έτσι ώστε δεν θα αλλάξει. Και ο δείκτης των λέξεων-κλειδιών δεν θα αλλάξει. Στη συνέχεια, το επόμενο γράμμα σε μορφή απλού κειμένου είναι l, μετατοπίζεται από μία, η οποία δεν μετατόπιση το απλό έγγραφο κειμένου σε όλα, γιατί a είναι η 0th γράμμα της αλφαβήτου. Η διαδικασία συνεχίζεται, η προώθηση χαρακτήρα-κλειδί κάθε φορά που υπάρχει μια επιστολή στον απλό κείμενο. Μόλις το τελευταίο γράμμα της λέξης-κλειδιού είναι επιτευχθεί, η λέξη-κλειδί τυλίγει γύρω και μετατοπίζεται προς το επόμενο κάμπο επιστολή κειμένου από p. X lvne noh. Πόσο ρομαντικό. Έτσι, δίνεται ένα χαρακτήρα, πώς μπορείτε να μετατρέψετε ότι στην αντίστοιχη cipher στροφή; Δοκιμάστε να συγκρίνετε τον ASCII αξίες της βάρδιας. Ίσως μπορείτε να βρείτε μια σχέση μεταξύ των γραμμάτων και τους αλφαβητικό ευρετήριο χρησιμοποιώντας ASCII μαθηματικά. Μπορείτε να προσθέσετε ή να αφαιρέσετε ένα χαρακτήρα από την άλλη για να πάρει σας το επιθυμητό αποτέλεσμα; Να θυμάστε ότι οι μετατοπίσεις για κεφαλαία και πεζά γράμματα είναι τα ίδια. Έτσι, ίσως θα πρέπει να προσδιορίσει δύο παρόμοιες φόρμουλες να εκπροσωπεί το βάρδια, μία για ένα κεφαλαίο χαρακτήρα-κλειδί, και ένα για ένα πεζό μία. Στη συνέχεια, να θυμάστε ότι οι προκαταβολές λέξη-κλειδί μόνον αν ο χαρακτήρας στην απλό κείμενο είναι μια επιστολή και ότι η περίπτωση του κάμπου κείμενο πρέπει να διατηρηθεί. Έτσι, αν κοιτάξουμε την φόρμουλα για την Vigenere βάρδιες, υπάρχουν δύο δείκτες μεταβλητές, i και j. Κάποιος παρακολουθεί την κατάσταση στην πεδιάδα κειμένου, και η άλλη η θέση τη λέξη-κλειδί. Αλλά απλό κείμενο σας μπορεί να είναι πολύ μεγαλύτερη από ό, τι λέξη-κλειδί σας, οπότε σας ευρετήριο λέξεων-κλειδιών θα πρέπει να τυλίξετε γύρω από την πλάτη στην αρχή των λέξεων-κλειδιών. Πώς το κάνεις αυτό; Ας κοιτάξουμε πίσω στο modulo φορέα. Modulo ορίζεται είναι το υπόλοιπο διαίρεση των δύο αριθμών. Αλλά αυτό είναι μια πραγματική πρακτική χρήση του modulo; Λοιπόν, ας πούμε έχετε μια μεγάλη ομάδα ανθρώπους, και θα πρέπει να διαιρεθούν σε τρεις ομάδες. Ένας τρόπος για να χωρίσουμε τους ανθρώπους σε ομάδες είναι να τους μετρήσει off. Μπορείτε αριθμό της ομάδας των ομάδων τον αριθμό 1, 2, και 3. Το πρώτο άτομο που θα πει 1, η επόμενη 2, το επόμενο 3. Το πρόσωπο μετά από αυτό θα πει 1, επειδή δεν υπάρχει μια ομάδα 4, και το μετράνε ξεκινά πάνω από εκεί. Μπορείτε να χρησιμοποιήσετε το modulo για να κάνουν το ίδιο πράγμα. Αυτή τη φορά, οι ομάδες θα είναι ομάδα 0, 1 και 2. Το πρώτο πρόσωπο, τον αριθμό 1 modulo 3, είναι 1. Άτομο 2 modulo 3 είναι 2. Άτομο 3 modulo 3 είναι 0. Άτομο 4 modulo 3 δίνει 1, και ούτω οι ομάδες να τυλίξετε γύρω. Έτσι, εάν παίρνετε ένα δείκτη και modulo ότι ο δείκτης κατά το μέγιστο μέγεθος, η αποτέλεσμα δεν θα είναι ποτέ μεγαλύτερη από ή ίσο με το μέγεθος, που σημαίνει ότι μπορεί να αυξήσει το δείκτη, όπως όσο θα θέλατε. Και εφ 'όσον modulo το δείκτη του κάποια σειρά, δεν θα πάρετε έναν αριθμό μεγαλύτερο από αυτό. Έτσι έχουμε 10 άτομα αντί για 5, και θα πάρει όλα τα ανατεθεί σε ομάδες τον αριθμό 0, 1, ή 2. Προσπαθήστε να εφαρμόσετε αυτήν την συσκευασία πάνω από το λέξη-κλειδί, εκτός αντί της διαλογής οι άνθρωποι σε αριθμούς ομάδας που θέλετε το δείκτη των λέξεων-κλειδιών ώστε να μπορείτε να πάρει το σωστό χαρακτήρα για την στροφή χωρίς να υπερβαίνει το μήκος του string. Με αυτό, έχετε σας Vigenere κρυπτογράφησης. Το όνομά μου είναι Zamyla, και αυτό είναι CS50.