>> ROB: Salut, je suis Rob, et laisse de déchiffrer le programme de Vigenère.
Donc la première chose que nous devons faire est de faire que l'utilisateur est entré ce que nous attendions
leur à la ligne de commande.
Donc, si argc n'est pas 2 que ça veut dire l'utilisateur n'a pas le nous de chaîne
veulent être en utilisant notre cryptage chaîne, ou ils
entré trop de choses.
Et nous ne savons pas quoi faire avec ces autres choses.
>> Alors nous leur disons ce qu'ils aurait dû entrer.
Et nous reviendrons.
Maintenant, en supposant que argc était de 2, nous pouvons continuer avec le reste du programme.
>> Nous alias le nom de argv [1]
dans le mot variable.
Alors que nous n'avons pas à utiliser le nom argv [1]
dans tout le reste du programme.
Et peut-être que nous allons oublier ce cela signifie et ainsi de suite.
Mot-clé est un nom beaucoup plus agréable.
Et nous saisissons immédiatement la longueur de notre mot clé ici.
>> OK, maintenant nous voulons vérifier que notre mot-clé est en fait valable.
Le mot-clé que nous utilisons pour crypter les chaînes devrait juste être alphabétique
caractères.
Si l'utilisateur a entré non-alphabétique caractères, nous devrions dire, mot-clé
ne doit contenir A à Z et revenez ensuite.
Donc, cette boucle for sur tout caractères de notre mot vérifiant
que si l'on n'est pas alphabétique, puis nous devons imprimer cet avertissement.
>> Maintenant, une fois que nous arrivons à ce point, nous savons que la chaîne doit être correcte.
Le mot-clé doit être correcte.
Et maintenant, nous devons faire passer le message de l'utilisateur qu'ils nous veulent
crypter avec cette phrase-clé.
Donc, pour faire passer ce message, nous avons une faire boucle while qui va
continu obtenir une chaîne de l'utilisateur jusqu'à ce qu'ils entrent dans une chaîne valide.
>> Poursuivant, nous voyons ici cette variable, int nun_letters_seen.
Nous verrons pourquoi nous avons besoin que dans une seconde.
Mais cette boucle va parcourir de i est égal à 0 tout le chemin jusqu'à i
est égal à N, ce qui signifie que nous itération plus possible
caractères dans notre message.
Parce que nous voulons pour crypter tous les personnages de notre message.
Ainsi constate-nous si (isalphamessage [I], parce que nous ne voulons pas crypter
caractères qui ne sont pas alphabétique.
Si il ya des symboles, des espaces, ou des chiffres, nous ne faisons pas
de chiffrer celles-ci.
>> Maintenant, en supposant qu'il est alphabétique, nous voulons d'abord comprendre ce que nous
voulez réellement chiffrer le message à l'aide.
Alors qu'est-ce que je veux dire par là?
>> Supposons que la phrase clé l'utilisateur d'entrer était abc.
C'est ce que nous allons utiliser pour chiffrer.
Maintenant, naïvement, nous pensons que cela signifie que nous voulons chiffrer le premier caractère
de notre message par 0, car un moyen faire tourner le caractère par 0.
>> Nous voulons chiffrer le deuxième caractère par 1, troisième caractère par 2,
le quatrième caractère par 0, le cinquième par 1, 2 par la sixième, et ainsi de suite.
Mais rappelez-vous, que nous voulons aller espaces et symboles et des chiffres.
Cela signifie que si l'utilisateur avait entré Bonjour tout le monde que le message
qu'ils veulent crypter, puis nous voulons chiffrer le h par 0
correspondant à l'une, par l'e 1, dans la l par 2, le l par 0, le o par 1.
Nous voulons aller de l'espace, chiffré w par le 2, le o par 0, 1, 2, 0.
Donc remarquer, si nous n'avions pas sauté le espace, puis nous aurait chiffré
w par 0 et terminé avec la chaîne incorrecte.
>> OK, c'est ce que nous avons besoin de la variable num_letters_seen pour.
Si nous allions seulement pour chiffrer l'aide Cette méthode, qui ne saute pas
symboles, des espaces et des chiffres, alors nous pouvais utiliser la variable i que ce
à l'index dans notre phrase clé avec.
Nous devons utiliser num_letters_seen à garder piste de la place réelle dans le
phrase clé que nous voulons à l'index.
Donc ici, si le mot-clé, nous avons, si num_letter_seen keyword_length mod, donc
pourquoi avons-nous besoin de mod par la longueur du mot-clé?
>> Eh bien, bonjour le monde est un bon exemple.
Si le mot-clé était abc, nous devons pour crypter en continu par un puis b
alors c, puis enveloppez retourna, a, b, c, a, b, c.
Nous avons donc besoin de mod par la longueur du mot-clé afin de conclure en arrière autour.
>> Donc, si cela est une lettre majuscule, alors nous voulons chiffrer par le
position de cette lettre de l'alphabet, que nous obtenons par tout
soustrayant grand A. Et de même, pour les lettres minuscules, nous
peut obtenir la clé que nous voulons par soustrayant minuscules un.
Ainsi, indépendamment du fait que la lettre dans la phrase clé est un capital ou
lettre minuscule, nous allons crypter par la même quantité.
>> Maintenant que nous avons notre clé, nous voyons ici, que si le message i est une majuscule
caractère, alors nous voulons calculer le position dans l'alphabet de cette
caractère, ajouter notre touche à elle, l'envelopper de retour autour de sorte que si nous sommes passés d'une
z nous revenons à a, b, c, et ainsi de suite.
Puis, enfin, rajouter du capital A. Alors nous passons de nouveau dans la [? Ascii?]
gamme de ces personnages à la place de la position numérique dans l'alphabet
de ces caractères.
>> Et nous faisons la même chose pour Caractères minuscules.
Sauf que nous voulons soustraire à minuscules un et le rajouter dans la
fin, minuscules un.
Notez que num_letter_seen n'est incrémenté si le message que j'étais
alphabétique.
C'est ainsi que nous sautons espaces, symboles, et numéros dans notre phrase-clé, depuis
num_letter_seen est ce que nous utilisons à l'index dans notre clé.
>> Enfin, à la fin, maintenant ce message i a été chiffré, nous
j'imprime un message i.
Et c'est tout.
Mon nom est Rob.
Et c'est Vigenère.
>> [MUSIQUE JEU]