ROB: Ciao, mi chiamo Rob e cerchiamo di decifrare il programma Vigenere. Quindi prima cosa che dobbiamo fare è rendere che l'utente ha inserito quello che ci aspettavamo loro alla linea di comando. Quindi, se argc non è 2 significa che sia l'utente non ha inserito la stringa di noi vogliono essere utilizzando come nostra crittografia stringa, oppure inserito troppe cose. E noi non sappiamo cosa fare con quelle altre cose. Quindi diciamo loro che cosa dovrebbe essere entrato. E torniamo. Ora, supponendo che argc era 2, possiamo continuare con il resto del programma. Abbiamo alias il nome di argv [1] nella parola chiave variabile. In modo che noi non dobbiamo utilizzerà il nome argv [1] tutto il resto del programma. E forse ci dimentichiamo quello che significa e così via. Parola chiave è un nome molto più bello. E faremo afferrare immediatamente la lunghezza della nostra parola chiave qui. OK, ora vogliamo verificare che la nostra parola chiave è effettivamente valido. La parola chiave che usiamo per criptare stringhe dovrebbe essere solo alfabetico caratteri. Se l'utente ha immesso non-alfabetico personaggi, dovremmo dire, parola chiave deve contenere solo da A Z e poi tornare. Quindi questo ciclo for itera su tutto personaggi della nostra parola chiave, controllando che se uno non è alfabetico poi abbiamo bisogno di stampare tale avvertimento. Ora, una volta che siamo arrivati ​​a questo punto, sappiamo che la stringa deve essere corretta. La parola chiave deve essere corretta. E ora abbiamo bisogno di ottenere il messaggio da l'utente che ci vogliono cifrare con quella frase-chiave. Quindi, per ottenere quel messaggio, abbiamo un fare mentre ciclo che sta per continuamente ottenere una stringa dall'utente fino a quando non entrano in una stringa valida. Proseguendo, vediamo qui questa variabile, int nun_letters_seen. Vedremo perché abbiamo bisogno che in un secondo. Ma questo per il ciclo sta per iterare da i è uguale a 0 tutta la strada fino ad i eguali n, il che significa che stiamo scorrendo su tutte le possibili personaggi del nostro messaggio. Perché vogliamo criptare tutti i personaggi del nostro messaggio. Così notiamo che facciamo se (isalphamessage [I], perché non vogliamo per crittografare caratteri che non sono alfabetico. Se ci sono simboli, spazi, o numeri, non lo facciamo voler cifrare quelle. Ora, supponendo che sia alfabetico, abbiamo prima vogliamo capire cosa abbiamo effettivamente desidera crittografare il messaggio utilizzando. Così che cosa voglio dire con questo? Supponiamo che la frase chiave l'utente immesso era abc. Questo è quello che stiamo usando per crittografare. Ora, ingenuamente, pensiamo che significa che vogliamo criptare il primo carattere del nostro messaggio da 0, da un mezzo ruotare il personaggio da 0. Vogliamo crittografare il secondo carattere da 1, terzo personaggio da 2, il quarto carattere da 0, il quinto da 1, il sesto da 2, e così via. Ma ricordate, che vogliamo ignorare spazi e simboli e numeri. Ciò significa che se l'utente fosse entrato ciao mondo come il messaggio che vogliono cifrare, poi vogliamo criptare l'h da 0 corrispondente a, l'indirizzo di 1, la l da 2, l da 0, l'O da 1. Vogliamo ignorare lo spazio, criptato il w da 2, l'O da 0, 1, 2, 0. Quindi notare, se non avessimo saltato il spazio, quindi ci sarebbe criptato il w da 0 e si è conclusa con la stringa non corretta. OK, questo è quello che ci serve la variabile num_letters_seen per. Se stavamo andando a crittografare utilizzando questo metodo, che non salti simboli, spazi e numeri, allora potessi utilizzare la variabile i come quello all'indice nella nostra frase chiave con. Dobbiamo usare num_letters_seen per mantenere traccia del luogo effettivo nella frase-chiave che vogliamo indice. Ecco, se la parola chiave abbiamo, se num_letter_seen keyword_length mod, così perché abbiamo bisogno di mod per lunghezza parola chiave? Beh, ciao mondo era un buon esempio. Se la parola chiave è stata abc, allora abbiamo bisogno per crittografare continuamente da un allora b poi c, poi avvolgere di nuovo intorno, a, b, c, a, b, c. Quindi abbiamo bisogno di mod per lunghezza parola chiave per avvolgere indietro intorno. Quindi, se si tratta di una lettera maiuscola, poi vogliamo criptare dal posizione di tale lettera dell'alfabeto, che si ottiene semplicemente sottraendo capitali in A. E analogamente, per le lettere minuscole, abbiamo può ottenere la chiave che vogliamo da sottraendo fuori minuscola. Quindi, indipendentemente dal fatto che la lettera nella frase chiave era un capitale o lettera minuscola, stiamo andando a crittografare dello stesso importo. Ora che abbiamo la nostra chiave, che vediamo qui, che se il messaggio i è un maiuscolo carattere, quindi vogliamo calcolare l' posizione in alfabeto di tale carattere, aggiungere la chiave ad esso, avvolgere indietro intorno in modo che se siamo andati oltre una z torniamo a, b, c, e così via. Poi, finalmente, aggiungere di nuovo sul capitale A. Quindi ci spostiamo di nuovo nel [? Ascii?] gamma di questi caratteri invece del posizione numerica in alfabeto di questi personaggi. E facciamo la stessa cosa per caratteri minuscoli. Tranne che vogliamo sottrarre minuscolo una e inserirlo nuovamente nella fine, minuscolo a. Si noti che num_letter_seen è solo incrementato se il messaggio mi è stato alfabetico. Questo è il modo saltiamo spazi, simboli e numeri nella nostra frase-chiave, dal momento che num_letter_seen è quello che stiamo usando all'indice nella nostra parola chiave. Infine, alla fine, ora che messaggio i è stato criptato, abbiamo stampare fuori i messaggi. E questo è tutto. Il mio nome è Rob. E questo è Vigenere. [GIOCO MUSICA]