1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> ROB: Salut, je suis Rob, et laisse de déchiffrer le programme de Vigenère. 3 00:00:16,980 --> 00:00:21,180 Donc la première chose que nous devons faire est de faire que l'utilisateur est entré ce que nous attendions 4 00:00:21,180 --> 00:00:23,240 leur à la ligne de commande. 5 00:00:23,240 --> 00:00:28,720 Donc, si argc n'est pas 2 que ça veut dire l'utilisateur n'a pas le nous de chaîne 6 00:00:28,720 --> 00:00:31,780 veulent être en utilisant notre cryptage chaîne, ou ils 7 00:00:31,780 --> 00:00:32,890 entré trop de choses. 8 00:00:32,890 --> 00:00:35,130 Et nous ne savons pas quoi faire avec ces autres choses. 9 00:00:35,130 --> 00:00:37,960 >> Alors nous leur disons ce qu'ils aurait dû entrer. 10 00:00:37,960 --> 00:00:39,300 Et nous reviendrons. 11 00:00:39,300 --> 00:00:44,570 Maintenant, en supposant que argc était de 2, nous pouvons continuer avec le reste du programme. 12 00:00:44,570 --> 00:00:47,890 >> Nous alias le nom de argv [1] 13 00:00:47,890 --> 00:00:49,750 dans le mot variable. 14 00:00:49,750 --> 00:00:51,860 Alors que nous n'avons pas à utiliser le nom argv [1] 15 00:00:51,860 --> 00:00:53,050 dans tout le reste du programme. 16 00:00:53,050 --> 00:00:55,570 Et peut-être que nous allons oublier ce cela signifie et ainsi de suite. 17 00:00:55,570 --> 00:00:57,830 Mot-clé est un nom beaucoup plus agréable. 18 00:00:57,830 --> 00:01:01,982 Et nous saisissons immédiatement la longueur de notre mot clé ici. 19 00:01:01,982 --> 00:01:07,460 >> OK, maintenant nous voulons vérifier que notre mot-clé est en fait valable. 20 00:01:07,460 --> 00:01:11,250 Le mot-clé que nous utilisons pour crypter les chaînes devrait juste être alphabétique 21 00:01:11,250 --> 00:01:12,400 caractères. 22 00:01:12,400 --> 00:01:16,830 Si l'utilisateur a entré non-alphabétique caractères, nous devrions dire, mot-clé 23 00:01:16,830 --> 00:01:20,170 ne doit contenir A à Z et revenez ensuite. 24 00:01:20,170 --> 00:01:24,370 Donc, cette boucle for sur tout caractères de notre mot vérifiant 25 00:01:24,370 --> 00:01:31,870 que si l'on n'est pas alphabétique, puis nous devons imprimer cet avertissement. 26 00:01:31,870 --> 00:01:36,285 >> Maintenant, une fois que nous arrivons à ce point, nous savons que la chaîne doit être correcte. 27 00:01:36,285 --> 00:01:38,230 Le mot-clé doit être correcte. 28 00:01:38,230 --> 00:01:40,880 Et maintenant, nous devons faire passer le message de l'utilisateur qu'ils nous veulent 29 00:01:40,880 --> 00:01:43,910 crypter avec cette phrase-clé. 30 00:01:43,910 --> 00:01:46,780 Donc, pour faire passer ce message, nous avons une faire boucle while qui va 31 00:01:46,780 --> 00:01:52,650 continu obtenir une chaîne de l'utilisateur jusqu'à ce qu'ils entrent dans une chaîne valide. 32 00:01:52,650 --> 00:01:58,690 >> Poursuivant, nous voyons ici cette variable, int nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 Nous verrons pourquoi nous avons besoin que dans une seconde. 34 00:02:01,300 --> 00:02:07,320 Mais cette boucle va parcourir de i est égal à 0 tout le chemin jusqu'à i 35 00:02:07,320 --> 00:02:10,940 est égal à N, ce qui signifie que nous itération plus possible 36 00:02:10,940 --> 00:02:13,020 caractères dans notre message. 37 00:02:13,020 --> 00:02:17,370 Parce que nous voulons pour crypter tous les personnages de notre message. 38 00:02:17,370 --> 00:02:22,970 Ainsi constate-nous si (isalphamessage [I], parce que nous ne voulons pas crypter 39 00:02:22,970 --> 00:02:25,660 caractères qui ne sont pas alphabétique. 40 00:02:25,660 --> 00:02:28,810 Si il ya des symboles, des espaces, ou des chiffres, nous ne faisons pas 41 00:02:28,810 --> 00:02:30,730 de chiffrer celles-ci. 42 00:02:30,730 --> 00:02:37,220 >> Maintenant, en supposant qu'il est alphabétique, nous voulons d'abord comprendre ce que nous 43 00:02:37,220 --> 00:02:40,890 voulez réellement chiffrer le message à l'aide. 44 00:02:40,890 --> 00:02:42,710 Alors qu'est-ce que je veux dire par là? 45 00:02:42,710 --> 00:02:46,740 >> Supposons que la phrase clé l'utilisateur d'entrer était abc. 46 00:02:46,740 --> 00:02:49,070 C'est ce que nous allons utiliser pour chiffrer. 47 00:02:49,070 --> 00:02:54,850 Maintenant, naïvement, nous pensons que cela signifie que nous voulons chiffrer le premier caractère 48 00:02:54,850 --> 00:02:59,740 de notre message par 0, car un moyen faire tourner le caractère par 0. 49 00:02:59,740 --> 00:03:04,395 >> Nous voulons chiffrer le deuxième caractère par 1, troisième caractère par 2, 50 00:03:04,395 --> 00:03:09,170 le quatrième caractère par 0, le cinquième par 1, 2 par la sixième, et ainsi de suite. 51 00:03:09,170 --> 00:03:14,440 Mais rappelez-vous, que nous voulons aller espaces et symboles et des chiffres. 52 00:03:14,440 --> 00:03:21,520 Cela signifie que si l'utilisateur avait entré Bonjour tout le monde que le message 53 00:03:21,520 --> 00:03:26,590 qu'ils veulent crypter, puis nous voulons chiffrer le h par 0 54 00:03:26,590 --> 00:03:32,680 correspondant à l'une, par l'e 1, dans la l par 2, le l par 0, le o par 1. 55 00:03:32,680 --> 00:03:41,050 Nous voulons aller de l'espace, chiffré w par le 2, le o par 0, 1, 2, 0. 56 00:03:41,050 --> 00:03:45,250 Donc remarquer, si nous n'avions pas sauté le espace, puis nous aurait chiffré 57 00:03:45,250 --> 00:03:51,240 w par 0 et terminé avec la chaîne incorrecte. 58 00:03:51,240 --> 00:03:57,470 >> OK, c'est ce que nous avons besoin de la variable num_letters_seen pour. 59 00:03:57,470 --> 00:04:04,450 Si nous allions seulement pour chiffrer l'aide Cette méthode, qui ne saute pas 60 00:04:04,450 --> 00:04:09,860 symboles, des espaces et des chiffres, alors nous pouvais utiliser la variable i que ce 61 00:04:09,860 --> 00:04:12,540 à l'index dans notre phrase clé avec. 62 00:04:12,540 --> 00:04:17,620 Nous devons utiliser num_letters_seen à garder piste de la place réelle dans le 63 00:04:17,620 --> 00:04:21,146 phrase clé que nous voulons à l'index. 64 00:04:21,146 --> 00:04:32,240 Donc ici, si le mot-clé, nous avons, si num_letter_seen keyword_length mod, donc 65 00:04:32,240 --> 00:04:34,570 pourquoi avons-nous besoin de mod par la longueur du mot-clé? 66 00:04:34,570 --> 00:04:36,630 >> Eh bien, bonjour le monde est un bon exemple. 67 00:04:36,630 --> 00:04:42,310 Si le mot-clé était abc, nous devons pour crypter en continu par un puis b 68 00:04:42,310 --> 00:04:45,740 alors c, puis enveloppez retourna, a, b, c, a, b, c. 69 00:04:45,740 --> 00:04:50,110 Nous avons donc besoin de mod par la longueur du mot-clé afin de conclure en arrière autour. 70 00:04:50,110 --> 00:04:57,280 >> Donc, si cela est une lettre majuscule, alors nous voulons chiffrer par le 71 00:04:57,280 --> 00:05:01,450 position de cette lettre de l'alphabet, que nous obtenons par tout 72 00:05:01,450 --> 00:05:06,730 soustrayant grand A. Et de même, pour les lettres minuscules, nous 73 00:05:06,730 --> 00:05:13,000 peut obtenir la clé que nous voulons par soustrayant minuscules un. 74 00:05:13,000 --> 00:05:16,910 Ainsi, indépendamment du fait que la lettre dans la phrase clé est un capital ou 75 00:05:16,910 --> 00:05:21,640 lettre minuscule, nous allons crypter par la même quantité. 76 00:05:21,640 --> 00:05:28,680 >> Maintenant que nous avons notre clé, nous voyons ici, que si le message i est une majuscule 77 00:05:28,680 --> 00:05:32,660 caractère, alors nous voulons calculer le position dans l'alphabet de cette 78 00:05:32,660 --> 00:05:39,460 caractère, ajouter notre touche à elle, l'envelopper de retour autour de sorte que si nous sommes passés d'une 79 00:05:39,460 --> 00:05:43,170 z nous revenons à a, b, c, et ainsi de suite. 80 00:05:43,170 --> 00:05:49,070 Puis, enfin, rajouter du capital A. Alors nous passons de nouveau dans la [? Ascii?] 81 00:05:49,070 --> 00:05:52,010 gamme de ces personnages à la place de la position numérique dans l'alphabet 82 00:05:52,010 --> 00:05:53,540 de ces caractères. 83 00:05:53,540 --> 00:05:56,610 >> Et nous faisons la même chose pour Caractères minuscules. 84 00:05:56,610 --> 00:06:00,070 Sauf que nous voulons soustraire à minuscules un et le rajouter dans la 85 00:06:00,070 --> 00:06:02,900 fin, minuscules un. 86 00:06:02,900 --> 00:06:08,120 Notez que num_letter_seen n'est incrémenté si le message que j'étais 87 00:06:08,120 --> 00:06:09,640 alphabétique. 88 00:06:09,640 --> 00:06:15,790 C'est ainsi que nous sautons espaces, symboles, et numéros dans notre phrase-clé, depuis 89 00:06:15,790 --> 00:06:20,520 num_letter_seen est ce que nous utilisons à l'index dans notre clé. 90 00:06:20,520 --> 00:06:24,540 >> Enfin, à la fin, maintenant ce message i a été chiffré, nous 91 00:06:24,540 --> 00:06:26,280 j'imprime un message i. 92 00:06:26,280 --> 00:06:27,890 Et c'est tout. 93 00:06:27,890 --> 00:06:28,670 Mon nom est Rob. 94 00:06:28,670 --> 00:06:31,020 Et c'est Vigenère. 95 00:06:31,020 --> 00:06:32,850 >> [MUSIQUE JEU] 96 00:06:32,850 --> 00:06:36,651