>> ROB: Ola, eu son Rob, e imos descifrar o programa Vigenère.
Entón o primeiro que temos que facer é Comproba se o usuario inseriu o que esperabamos
los para a liña de comandos.
Entón, se argc non é 2, que significa tanto o usuario non entrou na cadea de nós
quere usar como a nosa cifrado corda, ou
entrou moitas cousas.
E nós non sabemos o que facer coas outras cousas.
>> Por iso, dicir-lles o que eles debería entrar.
E volvemos.
Agora, admitindo que argc era 2, podemos continuar co resto do programa.
>> Nós alias nome de argv [1]
para a palabra clave variable.
De xeito que non ten por usar o nome argv [1]
durante todo o resto do programa.
E quizais nós imos esquecer o que que significa e así por diante.
Contrasinal é un nome moito máis agradable.
E nós imos inmediatamente coller a lonxitude da nosa contrasinal aquí.
>> OK, entón agora queremos comprobar que nosa palabra clave é realmente correcto.
O contrasinal que usan para cifrar cordas debe só ser alfabética
caracteres.
Se o usuario introduciu non alfabética caracteres, hai que dicir, contrasinal
debe conter só un medio Z e despois volver.
Polo tanto, este lazo for sobre todo personaxes da nosa palabra clave, comprobando
que, se a persoa non está en orde alfabética, a continuación, necesitamos imprimir este aviso.
>> Agora, unha vez que chegar a este punto, sabemos que a cadea debe ser correcta.
O contrasinal debe ser correcta.
E agora temos que pasar a mensaxe de o usuario que queiramos
cifrar con esa frase clave.
Así, para obter esta mensaxe, temos un facer mentres loop que vai
continuamente obter unha cadea do usuario ata que eles entran nunha secuencia válida.
>> Continuando, vemos aquí a esta variable, int nun_letters_seen.
A ver por iso que necesitamos que en un segundo.
Pero este ciclo for vai facer unha iteración i é igual a 0 todo o camiño ata i
é igual a n, o que significa que estamos interactuar sobre todo o posible
personaxes da nosa mensaxe.
Porque queremos cifrar todo os personaxes da nosa mensaxe.
Entón, teña en conta o que facemos se (isalphamessage [I] porque nós non queremos para cifrar
caracteres que non están alfabética.
Se hai símbolos, espazos, ou números, non
Quere cifrar.
>> Agora, supoñendo que está en orde alfabética, primeiro quero descubrir o que
realmente quere cifrar a mensaxe a usar.
Entón, o que quero dicir con iso?
>> Imos supor que a frase clave o usuario inseriu foi ABC.
Iso é o que estamos a usar para cifrar.
Agora, inxenuamente, pensamos que significa que queremos cifrar o primeiro carácter
da mensaxe por 0, xa que un medio xirando o personaxe por 0.
>> Queremos cifrar o segundo personaxe por 1, terceiro personaxe por 2,
o cuarto carácter por 0, o quinto por 1, o sexto por 2, e así por diante.
Pero lembre que queremos saltar espazos e símbolos e números.
Isto significa que, se o usuario entrara Ola mundo como a mensaxe
que quere cifrar e logo queremos cifrar o h por 0
correspondente á unha, o e por 1, o l por 2, a l por 0, o o en 1.
Queremos saltar o espazo, cifrado o w por 2, oo por 0, 1, 2, 0.
Entón, teña en conta, se non tivésemos pulado o espazo, entón teriamos cifrado
a w por 0 e acabou con a cadea incorrecta.
>> OK, iso é o que necesitamos a variable num_letters_seen para.
Se nós estabamos indo para cifrar usando este método, que non ignora
símbolos, espazos e números, entón nós podería usar só a variable i como o que
ao índice na nosa frase clave con.
Necesitamos utilizar num_letters_seen para manter pista do lugar real no
frase clave que queremos índice.
Entón, aquí, se a palabra clave que temos, se num_letter_seen keyword_length mod, entón
por que necesitamos mod por lonxitude de contrasinal?
>> Ben, Ola mundo era un bo exemplo.
Se a palabra clave é abc, entón necesitamos cifrar continuamente por un entón b
logo c, logo enrole arredor de volta, a, b, c, a, b, c.
Por iso, necesitamos mod pola lonxitude contrasinal a fin de envolve-volta.
>> Entón, se isto é unha letra maiúscula, entón queremos cifrar polo
posición de que letra do alfabeto, que temos só
subtraindo a capital de A. E do mesmo xeito, a letras minúsculas, nós
pode obter a clave que queremos por subtraindo a minúscula a.
Así, independentemente de a carta na frase clave era unha capital ou
letra minúscula, imos cifrar polo mesmo importe.
>> Agora que temos a nosa chave, vemos aquí, que se a mensaxe é un i maiúscula
personaxe, entón queremos calcular a posición na que o alfabeto de
personaxe, engadir a nosa clave para iso, enrole atrás en torno de xeito que, se pasou por un
z imos voltar a, b, c, e así por diante.
Entón, finalmente, engadir de novo sobre o capital A. Entón, cambiamos ao seu [? ASCII?]
variedade destes caracteres no canto do posición numérica no alfabeto
destes personaxes.
>> E nós facemos o mesmo para caracteres minúsculos.
Excepto queremos restar minúsculas un e engadir lo de volta en no
final, en minúsculas a.
Teña en conta que só é num_letter_seen incrementado se a mensaxe que eu estaba
alfabética.
É así que saltar espazos, símbolos e números na nosa frase clave, xa que
num_letter_seen é o que estamos a usar ao índice na nosa contrasinal.
>> Finalmente, ao final, xa que a mensaxe i foi cifrado, nós
imprimir mensaxe i.
E é iso.
O meu nome é Rob.
E esta é Vigenère.
>> [Música tocando]