[MUSIC PLAYING] ZAMYLA CHAN: Facciamo implementare Vigenère, un po 'più garantire cifrario di Cesare. Il testo in chiaro viene cifrato utilizzando una stringa invece di un numero intero. Ogni carattere alfabetico in testo in chiaro viene spostata di un lettera nella parola chiave. In questo esempio, la parola chiave ohai, O corrisponde ad uno spostamento di 14; H ad una spostamento di 7; A, spostamento di 0, e ho un turno di 8. Se hai implementato con successo la tua Cifrario di Cesare, sarà una bella quadro da cui è possono implementare Vigenere. Come si può vedere, l'esecuzione di un Vigenère cifrario con un singolo carattere come parola chiave è la stessa cosa come un cifrario di Cesare. La stessa procedura si applica per Vigenère come hanno fatto a Cesare. La parola chiave è la seconda linea di comando argomento, in modo da accedervi con argv1. Quindi è necessario verificare che la chiave parola è davvero tutto alfabetico. Qui è dove è alpha può tornare utile. Se si dispone di una chiave valida, si ottiene il forza da parte dell'utente, e quindi sei pronto per cifrare. La formula cifrario di Vigenère è simile a Cesare formula, solo che adesso k diventa K pedice j, indicando la j-esima lettera della parola chiave. Facciamo un passo attraverso questo processo. Diciamo di voler inviare un messaggio al tuo crash, mi piaci, ma tu no che tutti sappiano. Quindi si utilizza un cifrario di Vigenère con il panda parola chiave, perché, bene, è anche come i panda. La prima lettera, io, sarà spostata da p, dando x, 15 lettere dopo che io, perché 15 p è il 16 ° lettera dell'alfabeto. La lettera successiva del testo in chiaro è uno spazio, in modo che non sarà spostata. E l'indice della parola chiave non cambierà. Poi la prossima lettera in chiaro è l, spostata di una, che non sposta la lettera testo affatto, perché a è la lettera 0a dell'alfabeto. Il processo continua, avanzando l' personaggio chiave ogni volta che c'è un lettera del testo in chiaro. Una volta che l'ultima lettera la parola chiave è raggiunto, la parola chiave avvolge e sposta al prossimo pianura lettera del testo da p. X lvne noh. Che romantico. Quindi, dato un carattere, come si fa a convertire che nel corrispondente cifrare turno? Provate a confrontare l'ASCII valori per lo spostamento. Forse si può trovare un rapporto tra le lettere ed i loro Indice alfabetico utilizzando la matematica ASCII. Si può aggiungere o sottrarre un carattere da un altro per ottenere il risultato desiderato? Ricordate che i turni per maiuscolo e le lettere minuscole sono uguali. Quindi, forse, è necessario identificare due formule simili per rappresentare la spostamento, una per una maiuscola personaggio chiave, e uno per un unico minuscolo. Quindi, ricordate che la parola chiave avanza solo se il carattere nella testo è una lettera e che il caso della pianura il testo deve essere preservata. Quindi, se guardiamo la formula per il Vigenere turno, ci sono due indici variabili, i e j. Uno tiene traccia della posizione in pianura testo e l'altra posizione la parola chiave. Ma il vostro testo potrebbe essere molto più lungo oltre la parola chiave, in questo caso il vostro indice delle parole chiave deve avvolgere intorno alla schiena all'inizio della parola chiave. Come si fa a fare questo? Guardiamo indietro al operatore modulo. Modulo è definito è il resto di dividere due numeri. Ma che cosa è un pratico reale utilizzo di modulo? Beh, dire che hai un grande gruppo di persone, e avete bisogno di dividere in tre gruppi. Un modo per dividere le persone in gruppi è di farli contare fuori. È il numero del gruppo di gruppi numero 1, 2, e 3. La prima persona dirà 1, il successivo 2, il successivo 3. La persona dopo che dirà 1, poiché non vi è un gruppo 4, e l' conteggio ricomincia da lì. È possibile utilizzare modulo di fare la stessa cosa. Questa volta, i gruppi saranno essere di gruppo 0, 1, e 2. La prima persona, il numero 1 modulo 3, è 1. Persona 2 modulo 3 è 2. Persona 3 modulo 3 è 0. Persona 4 modulo 3 dà 1 e così i gruppi possono avvolgere intorno. Quindi, se si prende un indice e modulo tale indice da una dimensione massima, la risultato sarà mai essere maggiore o uguale alla dimensione, il che significa che si può aumentare l'indice come quanto vuoi. E tutto il tempo che il modulo indice qualche numero, non sarà possibile ottenere un numero grande di quello. Quindi abbiamo 10 persone invece di 5, e sarebbero tutti vengono assegnati a gruppi numero 0, 1 o 2. Provate ad applicare questo per avvolgere il parola chiave, tranne che invece di smistamento le persone in numeri di gruppo si desidera che il indice delle parole chiave in modo da poter ottenere il carattere giusto per il spostare senza superare il lunghezza della stringa. Con questo, hai il tuo Vigenère. Il mio nome è Zamyla, e questo è CS50.