>> 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]