>> 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]