ROB: Oi, eu sou Rob, e vamos decifrar o programa Vigenere. Então a primeira coisa que precisamos fazer é Certifique-se o usuário digitou o que esperávamos los para a linha de comando. Então, se argc não é 2, que significa tanto o usuário não entrou na cadeia de nós quer usar como a nossa criptografia corda, ou eles entrou muitas coisas. E nós não sabemos o que fazer com as outras coisas. Por isso, dizer-lhes o que eles deveria ter entrado. E voltamos. Agora, admitindo que argc era 2, podemos continuar com o resto do programa. Nós alias o nome de argv [1] para a palavra-chave variável. De modo que não temos a usar o nome argv [1] durante todo o resto do programa. E talvez nós vamos esquecer o que que significa e assim por diante. Palavra-chave é um nome muito mais agradável. E nós vamos imediatamente agarrar o comprimento da nossa palavra-chave aqui. OK, então agora queremos verificar que nossa palavra-chave é realmente válido. A palavra-chave que usamos para criptografar cordas deve apenas ser alfabética caracteres. Se o usuário digitou não-alfabética caracteres, devemos dizer, palavra-chave deve conter apenas um meio Z e depois voltar. Portanto, este laço for sobre tudo personagens da nossa palavra-chave, verificando que, se a pessoa não está em ordem alfabética, em seguida, precisamos imprimir esse aviso. Agora, uma vez que chegar a este ponto, sabemos que a cadeia deve ser correta. A palavra-chave deve ser correta. E agora temos de passar a mensagem de o usuário que nós queremos criptografar com essa frase-chave. Assim, para obter essa mensagem, temos um fazer enquanto loop que vai continuamente obter uma string do usuário até que eles entram em uma seqüência válida. Continuando, vemos aqui a esta variável, int nun_letters_seen. Vamos ver por isso que precisamos que em um segundo. Mas este ciclo for vai fazer uma iteração de i é igual a 0 todo o caminho até i é igual a n, o que significa que estamos interagindo sobre todo o possível personagens da nossa mensagem. Porque queremos criptografar todos os personagens de nossa mensagem. Então, observe o que fazemos se (isalphamessage [I], porque nós não queremos para criptografar caracteres que não são alfabética. Se há símbolos, espaços, ou números, nós não deseja criptografar os. Agora, supondo que ele está em ordem alfabética, primeiro quero descobrir o que realmente deseja criptografar a mensagem usando. Então, o que quero dizer com isso? Vamos supor que a frase-chave o usuário digitou foi abc. Isso é o que estamos usando para criptografar. Agora, ingenuamente, pensamos que significa que queremos criptografar o primeiro caractere da mensagem por 0, uma vez que um meio girando o personagem por 0. Queremos criptografar o segundo personagem por 1, terceiro personagem por 2, o quarto caractere por 0, o quinto por 1, o sexto por 2, e assim por diante. Mas lembre-se que queremos pular espaços e símbolos e números. Isto significa que, se o utilizador tinha entrado Olá mundo como a mensagem que deseja criptografar e, em seguida queremos criptografar o h por 0 correspondente à uma, o e por 1, o l por 2, o l por 0, o o em 1. Queremos pular o espaço, cifrado o w por 2, oo por 0, 1, 2, 0. Então, observe, se não tivéssemos pulado o espaço, então teríamos criptografado a w por 0 e acabou com a string incorreta. OK, isso é o que precisamos a variável num_letters_seen para. Se nós estávamos indo para criptografar usando este método, que não ignora símbolos, espaços e números, então nós poderia usar apenas a variável i como o que para o índice em nossa frase-chave com. Precisamos usar num_letters_seen para manter pista do lugar real no frase-chave que queremos índice. Então, aqui, se a palavra-chave que temos, se num_letter_seen keyword_length mod, então por que precisamos de mod por comprimento de palavra-chave? Bem, Olá mundo era um bom exemplo. Se a palavra-chave é abc, então precisamos criptografar continuamente por um então b em seguida, c, em seguida, enrole em torno de volta, a, b, c, a, b, c. Por isso, precisamos de mod pelo comprimento palavra-chave a fim de envolvê-volta. Então, se isso é uma letra maiúscula, então queremos criptografar pelo posição de que letra do alfabeto, que temos apenas subtraindo a capital de A. E da mesma forma, para letras minúsculas, nós pode obter a chave que queremos por subtraindo a minúscula a. Assim, independentemente de a carta na frase-chave era uma capital ou letra minúscula, vamos criptografar pelo mesmo montante. Agora que temos a nossa chave, podemos ver aqui, que se a mensagem é um i maiúsculo personagem, então queremos calcular a posição em que o alfabeto de personagem, acrescentar a nossa chave para isso, enrole para trás em torno de modo que, se passou por um z vamos voltar para a, b, c, e assim por diante. Então, finalmente, adicionar novamente sobre o capital A. Então, mudamos de volta para o [? Ascii?] variedade desses caracteres em vez do posição numérica no alfabeto desses personagens. E nós fazemos a mesma coisa para caracteres minúsculos. Exceto queremos subtrair minúsculas um e adicioná-lo de volta em no final, em letras minúsculas a. Observe que só é num_letter_seen incrementado se a mensagem que eu estava alfabética. É assim que pular espaços, símbolos e números em nossa frase-chave, uma vez que num_letter_seen é o que estamos usando para o índice em nossa palavra-chave. Finalmente, no final, já que a mensagem i foi criptografado, nós imprimir mensagem i. E é isso. Meu nome é Rob. E esta é Vigenere. [Música tocando]