>> ROB: Ahoj, já jsem Rob, a pojďme dešifrovat programu Vigenere.
Takže první věc, kterou musíme udělat, je Ujistěte se, že uživatel zadal, co jsme očekávali
aby na příkazovém řádku.
Takže pokud argc není 2 to znamená, že buď uživatel nezadal řetězec my
chcete používat jako náš šifrování řetězec, nebo se
zadali příliš mnoho věcí.
A nevíme, co dělat s těmito dalšími věcmi.
>> Tak jsme jim říct, co se měly vstoupit.
A my jsme se vrátit.
Nyní, za předpokladu, že argc je 2, můžeme pokračovat se zbytkem programu.
>> Jsme alias název argv [1]
do proměnné klíčové slovo.
Takže nemáme na používat název argv [1]
po zbytek programu.
A možná budeme zapomenout na to, co to znamená, že, a tak dále.
Klíčové slovo je mnohem hezčí jméno.
A budeme hned chytit délku našeho klíčového slova tady.
>> OK, tak teď chceme zkontrolovat, zda naše klíčové slovo je ve skutečnosti platí.
Klíčové slovo, které používáme k zašifrování řetězce by měl být jen abecedy
znaky.
Je-li uživatel zadal non-abecední znaky, měli bychom říci, klíčové slovo
musí obsahovat pouze průchozí Z a pak se vrátit.
Takže to pro smyčky iteruje přes všechny znaky našeho klíčového slova, kontrolu
že pokud jeden není abecední pak musíme vytisknout tento varování.
>> Nyní, jakmile se dostaneme do tohoto bodu, víme, že řetězec musí být správné.
Klíčové slovo musí být správné.
A teď musíme dostat zprávu od uživatel, který nás chce
šifrování s tímto klíčové fráze.
Takže si tu zprávu, máme dělat, zatímco smyčka, co se děje na
neustále se řetězec od uživatele dokud nevstoupí platný řetězec.
>> Pokračování, zde vidíme tuto proměnnou, int nun_letters_seen.
Uvidíme, proč potřebujeme že ve vteřině.
To pro smyčce se ale bude iterovat od i rovná 0 po celou cestu až do i
se rovná n, což znamená, že jsme iterace přes všechny možné
znaky v naší zprávě.
Protože chceme zašifrovat všechny postavy v naší zprávě.
Takže všimnete, co děláme, pokud (isalphamessage [I], protože nechceme, aby šifrování
znaky, které nejsou podle abecedy.
Pokud jsou symboly, mezery, nebo čísla, my ne
chcete zašifrovat ty.
>> Nyní, za předpokladu, že je abecední, jsme se poprvé chtějí zjistit, co se
vlastně chcete zašifrovat Zpráva pomocí.
Takže to, co mám na mysli, že?
>> Předpokládejme, že klíčové fráze uživatel zadal byl abc.
To je to, co jsme pomocí šifrování.
Nyní, naivně se domníváme, to znamená, že chceme zašifrovat první znak
naší zprávy o 0, protože prostředek otáčením znak 0.
>> Chceme zašifrovat druhý znak o 1, třetí znak o 2,
čtvrtý znak od 0, pátý o 1, šestý o 2, a tak dále.
Ale pamatujte, že chceme přeskočit mezery a symboly a čísla.
To znamená, že kdyby vstoupil uživatele hello world jako zpráva
které chcete zašifrovat, pak chceme šifrovat h od 0
odpovídající a, e o 1, l o 2, l o 0, o které jeden.
Chceme přeskočit prostor, šifrovaná w o 2, o o 0, 1, 2, 0.
Takže všimnout, kdybychom přeskočili prostor, pak bychom šifrována
w od 0 a skončil s nesprávný řetězec.
>> OK, to je to, co potřebujeme proměnnou num_letters_seen pro.
Pokud bychom se právě chystá na šifrování pomocí Tato metoda, která nemá přeskočit
symboly, mezery, a čísla, pak mohl použít proměnnou i jako to, co
index do naší klíčové fráze se.
Musíme využít num_letters_seen, aby stopa na skutečné místo v
klíčové fráze, které chceme do indexu.
Tak tady, pokud klíčové slovo máme, pokud num_letter_seen mod keyword_length, tak
Proč musíme mod podle délky klíčového slova?
>> No, ahoj svět byl dobrým příkladem.
Je-li klíčové slovo bylo abc, pak musíme průběžně šifrovat by pak b
pak c, pak zabalit zpět kolem, a, b, c, a, b, c.
Takže musíme mod podle délky klíčového slova aby se zabalit zpět kolem.
>> Takže pokud to je velké písmeno, pak chceme zašifrovat pomocí
postavení tohoto dopisu v abecedě, které jsme se jen o
odečtením z kapitálového A. A podobně, pro malá písmena, jsme
lze získat klíč, který chceme pomocí odečte se malá písmena A.
Takže bez ohledu na to, zda je písmeno v klíčové fráze byla kapitálu nebo
malé písmeno, budeme šifrovat o stejnou částku.
>> Teď, když máme klíč, vidíme zde, že pokud zpráva i je velká
charakter, pak chceme vypočítat pozice v abecedě, které
charakter, přidat náš klíč k tomu, zabalit zpět asi tak, že když jsme šli kolem
z vrátíme k a, b, c, a tak dále.
Pak, konečně, přidat zpět na kapitálovém A. Takže jsme se přesunout zpět do [? Ascii?]
řada z těchto znaků namísto číselné pozice v abecedě
z těchto znaků.
>> A děláme to samé pro malými písmeny.
Kromě chceme odečíst z malými písmeny a přidat zpět v
konec, malá písmena.
Všimněte si, že num_letter_seen je pouze zvýší-li zprávu jsem byl
podle abecedy.
To je, jak jsme se přeskočit mezery, symboly, a Čísla v naší klíčové fráze, protože
num_letter_seen je to, co jsme pomocí index do našeho klíčového slova.
>> A konečně, na konci, teď, že zpráva i bylo zakódováno, jsme
vytisknout zprávu.
A to je vše.
Jmenuji se Rob.
A to je Vigenere.
>> [MUSIC PŘEHRÁVÁNÍ]