1 00:00:00,000 --> 00:00:10,101 >> [Jouer de la musique] 2 00:00:10,101 --> 00:00:12,700 >> ZAMYLA CHAN: Implémentons Vigenère, un peu plus 3 00:00:12,700 --> 00:00:14,710 sécuriser chiffre de César. 4 00:00:14,710 --> 00:00:19,670 Le texte en clair est chiffré à l'aide une chaîne de caractères à la place d'un nombre entier. 5 00:00:19,670 --> 00:00:22,970 Chaque lettre de l'alphabet en texte en clair est décalé d'un 6 00:00:22,970 --> 00:00:24,450 lettre dans le mot-clé. 7 00:00:24,450 --> 00:00:30,860 >> Dans cet exemple, le mot-clé ohai, O correspond à un décalage de 14, H à une 8 00:00:30,860 --> 00:00:36,910 passer de 7, A, changement de 0, et je un décalage de 8. 9 00:00:36,910 --> 00:00:40,710 Si vous avez mis en place avec succès votre Le chiffre de César, ça va être une belle 10 00:00:40,710 --> 00:00:43,510 cadre à partir duquel vous peut mettre en œuvre Vigenère. 11 00:00:43,510 --> 00:00:47,140 Comme vous pouvez le voir, l'exécution d'un Vigenère chiffrement avec un caractère unique en tant que 12 00:00:47,140 --> 00:00:51,830 mot-clé est la même chose comme chiffre César. 13 00:00:51,830 --> 00:00:55,170 >> Les mêmes mesures s'appliquent à Vigenère comme ils le faisaient César. 14 00:00:55,170 --> 00:01:01,240 Le mot-clé est la deuxième ligne de commande argumentation, si vous y accédez avec argv1. 15 00:01:01,240 --> 00:01:05,400 Ensuite, vous devez vérifier que la clé mot est en effet tout alphabétique. 16 00:01:05,400 --> 00:01:09,040 C'est là où est l'alpha peut être pratique. 17 00:01:09,040 --> 00:01:13,550 Si vous avez un mot clé valide, vous obtenez l' la force de l'utilisateur, puis 18 00:01:13,550 --> 00:01:15,820 vous êtes prêt à chiffrer. 19 00:01:15,820 --> 00:01:20,840 >> La formule de chiffrement de Vigenère est similaire à la formule César, sauf que maintenant k 20 00:01:20,840 --> 00:01:27,650 k devient indice j, indiquant la j-ème caractère du mot clé. 21 00:01:27,650 --> 00:01:29,640 Revenons en à travers ce processus. 22 00:01:29,640 --> 00:01:34,060 Dites que vous voulez envoyer un message à votre crash, je vous aime, mais vous n'avez pas 23 00:01:34,060 --> 00:01:35,190 veux que chacun sache. 24 00:01:35,190 --> 00:01:39,800 Donc, vous utilisez un chiffrement de Vigenère avec le mot-clé panda, parce que, eh bien, vous aussi 25 00:01:39,800 --> 00:01:41,160 comme pandas. 26 00:01:41,160 --> 00:01:47,140 >> La première lettre, I, sera décalée par p, ce qui donne x, 15 lettres après I, 27 00:01:47,140 --> 00:01:52,850 parce que 15 p est le 16e lettre de l'alphabet. 28 00:01:52,850 --> 00:01:56,750 La lettre suivante dans le texte en clair est un espace, de manière à ne pas être déplacé. 29 00:01:56,750 --> 00:02:00,420 Et l'indice du mot-clé ne changera pas. 30 00:02:00,420 --> 00:02:05,440 >> Ensuite, la lettre suivante en texte clair est l, décalée d'un, qui ne se déplace pas 31 00:02:05,440 --> 00:02:10,930 la lettre du texte en clair du tout, parce que a est le 0ème lettre de l'alphabet. 32 00:02:10,930 --> 00:02:14,980 Le processus se poursuit, en avançant l' caractère de mot chaque fois qu'il ya une 33 00:02:14,980 --> 00:02:16,840 lettre dans le texte. 34 00:02:16,840 --> 00:02:21,850 Une fois la dernière lettre du mot-clé est atteint, le mot-clé entoure et 35 00:02:21,850 --> 00:02:25,890 se déplace vers le prochain plaine lettre du texte en p. 36 00:02:25,890 --> 00:02:27,170 X lvne Noh. 37 00:02:27,170 --> 00:02:29,180 Comme c'est romantique. 38 00:02:29,180 --> 00:02:33,120 >> Donc, étant donné un caractère, comment voulez-vous convertir que dans le correspondant 39 00:02:33,120 --> 00:02:34,590 chiffrer changement? 40 00:02:34,590 --> 00:02:37,870 Essayez de comparer l'ASCII valeurs à la transition. 41 00:02:37,870 --> 00:02:41,530 Peut-être que vous pouvez trouver une relation entre les lettres et leurs 42 00:02:41,530 --> 00:02:44,550 index alphabétique en utilisant les mathématiques ASCII. 43 00:02:44,550 --> 00:02:48,850 Pouvez-vous ajouter ou soustraire un caractère à partir de l'autre pour obtenir 44 00:02:48,850 --> 00:02:51,630 vous le résultat désiré? 45 00:02:51,630 --> 00:02:55,480 >> Rappelez-vous que les quarts de travail pour majuscule et minuscules sont les mêmes. 46 00:02:55,480 --> 00:02:59,510 Alors peut-être que vous aurez besoin d'identifier deux formules similaires pour représenter le 47 00:02:59,510 --> 00:03:03,570 changement, un pour une majuscule caractère de mot-clé, et une 48 00:03:03,570 --> 00:03:06,510 pour un minuscule un. 49 00:03:06,510 --> 00:03:10,630 >> Ensuite, n'oubliez pas que les mots clés avancées uniquement si le caractère en 50 00:03:10,630 --> 00:03:13,520 texte en clair est une lettre et que le cas de la plaine 51 00:03:13,520 --> 00:03:16,020 texte doit être préservée. 52 00:03:16,020 --> 00:03:20,280 Donc, si nous regardons la formule de l' Vigenère changement, il ya deux index 53 00:03:20,280 --> 00:03:22,880 variables i et j. 54 00:03:22,880 --> 00:03:26,795 On garde une trace de la position dans la plaine texte, et l'autre la position 55 00:03:26,795 --> 00:03:27,910 le mot-clé. 56 00:03:27,910 --> 00:03:32,960 Mais votre texte simple peut être beaucoup plus longue de votre mot clé, dans ce cas, votre 57 00:03:32,960 --> 00:03:38,290 index des mots clés doit envelopper retour au début de la clé. 58 00:03:38,290 --> 00:03:39,870 >> Comment pouvez-vous faire cela? 59 00:03:39,870 --> 00:03:43,740 Revenons à l' opérateur modulo. 60 00:03:43,740 --> 00:03:47,280 Modulo est défini est le reste de la division de deux nombres. 61 00:03:47,280 --> 00:03:50,680 Mais ce qui est une réelle pratique utiliser des modulo? 62 00:03:50,680 --> 00:03:54,340 >> Eh bien, disons que vous avez un grand groupe de personnes, et vous avez besoin de se diviser en 63 00:03:54,340 --> 00:03:55,100 trois groupes. 64 00:03:55,100 --> 00:03:59,500 Une façon de diviser les gens en groupes est de les faire compter off. 65 00:03:59,500 --> 00:04:03,520 Vous nombre du groupe des groupes numéro 1, 2, et 3. 66 00:04:03,520 --> 00:04:08,510 La première personne va dire 1, la prochaine 2, les 3 suivants. 67 00:04:08,510 --> 00:04:12,860 La personne qui va dire après 1, car il n'est pas un groupe 4, et l' 68 00:04:12,860 --> 00:04:15,880 compte à rebours commence à partir de là. 69 00:04:15,880 --> 00:04:18,209 >> Vous pouvez utiliser modulo faire la même chose. 70 00:04:18,209 --> 00:04:22,680 Cette fois-ci, les groupes soit le groupe 0, 1, et 2. 71 00:04:22,680 --> 00:04:26,960 La première personne, le nombre 1 modulo 3 vaut 1. 72 00:04:26,960 --> 00:04:29,830 Personne 2 modulo 3 est 2. 73 00:04:29,830 --> 00:04:32,460 Personne 3 modulo 3 est 0. 74 00:04:32,460 --> 00:04:38,470 Personne 4 modulo 3 donne 1, et ainsi de les groupes peuvent s'enrouler autour. 75 00:04:38,470 --> 00:04:44,700 >> Donc, si vous prenez un index et modulo que l'indice d'une taille maximale, le 76 00:04:44,700 --> 00:04:49,820 résultat ne sera jamais supérieure ou égale à la taille, ce qui signifie que vous 77 00:04:49,820 --> 00:04:52,330 peut augmenter l'indice de autant que vous le souhaitez. 78 00:04:52,330 --> 00:04:57,400 Et tant que vous modulo l'index par un nombre, vous n'obtiendrez pas un certain nombre 79 00:04:57,400 --> 00:04:58,510 plus grande que celle. 80 00:04:58,510 --> 00:05:04,500 Donc nous avons 10 personnes au lieu de 5, et ils seraient tous se affectés à des groupes 81 00:05:04,500 --> 00:05:07,480 nombre 0, 1, ou 2. 82 00:05:07,480 --> 00:05:11,680 >> Essayez d'appliquer à emballant sur la mot-clé, sauf qu'au lieu de tri 83 00:05:11,680 --> 00:05:16,050 personnes dans les numéros de groupe que vous voulez le index de la clé afin que vous puissiez 84 00:05:16,050 --> 00:05:19,080 obtenir le bon caractère pour l' déplacer sans dépasser la 85 00:05:19,080 --> 00:05:21,836 longueur de la chaîne. 86 00:05:21,836 --> 00:05:24,790 Avec cela, vous avez votre Vigenère. 87 00:05:24,790 --> 00:05:27,790 Mon nom est Zamyla, et c'est CS50. 88 00:05:27,790 --> 00:05:32,566