[Jouer de la musique] ZAMYLA CHAN: Implémentons Vigenère, un peu plus sécuriser chiffre de César. Le texte en clair est chiffré à l'aide une chaîne de caractères à la place d'un nombre entier. Chaque lettre de l'alphabet en texte en clair est décalé d'un lettre dans le mot-clé. Dans cet exemple, le mot-clé ohai, O correspond à un décalage de 14, H à une passer de 7, A, changement de 0, et je un décalage de 8. Si vous avez mis en place avec succès votre Le chiffre de César, ça va être une belle cadre à partir duquel vous peut mettre en œuvre Vigenère. Comme vous pouvez le voir, l'exécution d'un Vigenère chiffrement avec un caractère unique en tant que mot-clé est la même chose comme chiffre César. Les mêmes mesures s'appliquent à Vigenère comme ils le faisaient César. Le mot-clé est la deuxième ligne de commande argumentation, si vous y accédez avec argv1. Ensuite, vous devez vérifier que la clé mot est en effet tout alphabétique. C'est là où est l'alpha peut être pratique. Si vous avez un mot clé valide, vous obtenez l' la force de l'utilisateur, puis vous êtes prêt à chiffrer. La formule de chiffrement de Vigenère est similaire à la formule César, sauf que maintenant k k devient indice j, indiquant la j-ème caractère du mot clé. Revenons en à travers ce processus. Dites que vous voulez envoyer un message à votre crash, je vous aime, mais vous n'avez pas veux que chacun sache. Donc, vous utilisez un chiffrement de Vigenère avec le mot-clé panda, parce que, eh bien, vous aussi comme pandas. La première lettre, I, sera décalée par p, ce qui donne x, 15 lettres après I, parce que 15 p est le 16e lettre de l'alphabet. La lettre suivante dans le texte en clair est un espace, de manière à ne pas être déplacé. Et l'indice du mot-clé ne changera pas. Ensuite, la lettre suivante en texte clair est l, décalée d'un, qui ne se déplace pas la lettre du texte en clair du tout, parce que a est le 0ème lettre de l'alphabet. Le processus se poursuit, en avançant l' caractère de mot chaque fois qu'il ya une lettre dans le texte. Une fois la dernière lettre du mot-clé est atteint, le mot-clé entoure et se déplace vers le prochain plaine lettre du texte en p. X lvne Noh. Comme c'est romantique. Donc, étant donné un caractère, comment voulez-vous convertir que dans le correspondant chiffrer changement? Essayez de comparer l'ASCII valeurs à la transition. Peut-être que vous pouvez trouver une relation entre les lettres et leurs index alphabétique en utilisant les mathématiques ASCII. Pouvez-vous ajouter ou soustraire un caractère à partir de l'autre pour obtenir vous le résultat désiré? Rappelez-vous que les quarts de travail pour majuscule et minuscules sont les mêmes. Alors peut-être que vous aurez besoin d'identifier deux formules similaires pour représenter le changement, un pour une majuscule caractère de mot-clé, et une pour un minuscule un. Ensuite, n'oubliez pas que les mots clés avancées uniquement si le caractère en texte en clair est une lettre et que le cas de la plaine texte doit être préservée. Donc, si nous regardons la formule de l' Vigenère changement, il ya deux index variables i et j. On garde une trace de la position dans la plaine texte, et l'autre la position le mot-clé. Mais votre texte simple peut être beaucoup plus longue de votre mot clé, dans ce cas, votre index des mots clés doit envelopper retour au début de la clé. Comment pouvez-vous faire cela? Revenons à l' opérateur modulo. Modulo est défini est le reste de la division de deux nombres. Mais ce qui est une réelle pratique utiliser des modulo? Eh bien, disons que vous avez un grand groupe de personnes, et vous avez besoin de se diviser en trois groupes. Une façon de diviser les gens en groupes est de les faire compter off. Vous nombre du groupe des groupes numéro 1, 2, et 3. La première personne va dire 1, la prochaine 2, les 3 suivants. La personne qui va dire après 1, car il n'est pas un groupe 4, et l' compte à rebours commence à partir de là. Vous pouvez utiliser modulo faire la même chose. Cette fois-ci, les groupes soit le groupe 0, 1, et 2. La première personne, le nombre 1 modulo 3 vaut 1. Personne 2 modulo 3 est 2. Personne 3 modulo 3 est 0. Personne 4 modulo 3 donne 1, et ainsi de les groupes peuvent s'enrouler autour. Donc, si vous prenez un index et modulo que l'indice d'une taille maximale, le résultat ne sera jamais supérieure ou égale à la taille, ce qui signifie que vous peut augmenter l'indice de autant que vous le souhaitez. Et tant que vous modulo l'index par un nombre, vous n'obtiendrez pas un certain nombre plus grande que celle. Donc nous avons 10 personnes au lieu de 5, et ils seraient tous se affectés à des groupes nombre 0, 1, ou 2. Essayez d'appliquer à emballant sur la mot-clé, sauf qu'au lieu de tri personnes dans les numéros de groupe que vous voulez le index de la clé afin que vous puissiez obtenir le bon caractère pour l' déplacer sans dépasser la longueur de la chaîne. Avec cela, vous avez votre Vigenère. Mon nom est Zamyla, et c'est CS50.