>> ZAMYLA Chan:-nin addım edək Vigenere parol ilə oyun.
Vigenère parol deyil Sezar çox oxşar,
Sezar başqa, biz qəbul Bizim əsas kimi bir tam.
Vigenere biz gedirik Bir söz keçmək.
Mən istəyirdim Belə ki, keçmək Bu ohai tərəfindən CS 50 CipherText,
sonra hər bir hərf o deməkdir ki, Ohai əsas kimi xidmət edir,
Mən dövrü artıq gedirəm Mənim shift üçün söz
ciphertext edilməsi daha çox deşifre.
>> Bu nə deməkdir Söz keçmək?
Bəli, söz bir simli edir burada hər məktubu uyğundur
bir tam shift.
Belə ki, o 14 əsas uyğundur, 7 əsas h, a, 0 əsas var
Belə ki, heç bir şey dəyişə bilməz və sonra i 8 əsas var.
>> Mən Vigenere A qaçdı De düz mətn bu CS50 yaxşıdır,
sadəcə verəcək Mənə bir dəyişməz string.
Bu bərabərdir Qeyd edək ki, sıfır bir əsas ilə Sezar çalışır.
Əslində, çalışan Vigenere hər hansı bir xarakteri ilə
çalışan ekvivalent olacaq Həmin tam ilə Caesar.
>> Bütün sağ, belə ki, bu yana onlar istədiyiniz eynidir
həqiqətən gəlir ki, əgər yalnız Sezar köçürə bilərsiniz istəyirəm
Sizin Vigenere kodu daxil kodu.
Things dəyişəcək lakin ən azı var
Siz ilə işləyə bilər bir onurğa.
Todos istəyirik eyni Çünki əsas almaq üçün, düz mətn almaq,
encipher ki düz mətn, və sonra çap.
>> Just Sezar kimi əsas gedir ikinci command line kimi qəbul edilə
arqument argv index olan 1, ancaq bu dəfə fərqli
Bu əlifba olmalıdır, çünki.
Belə ki, biz hər üzərində təkrarlamaq lazımdır ki, əsas bir xarakter
istifadəçi keçdi və təmin edir Hər bir xarakter əlifba olduğunu
davam etmək üçün.
>> Biz sonra ki, həyata sonra, biz istifadəçi string əldə edə bilərsiniz,
yalnız biz əvvəl etdi.
İndi, biz ürək gəlir Vigenere problemin,
olan yalnız necə Sezar, kimi şifrələnməsindən model anlamaq
və tənlik və encipher bütün düz metin.
>> Belə ki, görəcəksiniz Vigenere shift üçün tənlik
Caesar bir çox oxşardır.
Yeganə fərq ki, Bunun əvəzinə bir dəyişən k
əvvəl, indi k bir simge var, əsas Jth məktub ifadə.
>> Nin bir misal vasitəsilə gəzmək edək.
Bir gizli keçmək istədi De Sizin sökməyin üzərində mesaj, mən sizi istəyirəm.
Yaxşı, sizin əsas üçün bir şey sevimli
bilirəm crush Siz PANDAS istəyirəm ki, bilir.
Bütün hüquqlar, belə ki, biz bu necə keçmək olar?
>> Bəli, biz düz metin index var.
Bu ilk məktub və belə ki, bizim əsas göstəricisidir
olan h, ilk Bizim panda sözü məktubu.
Belə ki, P I dəyişkən us x verir, sonra biz düz metin indeksi inkişaf.
Bu kosmik bizə olur.
İndi, space character qeyri əlifba edir
belə ki, o deməkdir ki, yalnız sağ ciphertext üzərində köçürmələri,
Biz orada bir yer qoymaq, və biz bunu Bizim əsas index inkişaf.
Belə ki, biz bu nöqtədə p hələ istəyirik.
>> Biz növbəti əvvəlcədən Bizim düz metin index.
İndi ki, çünki məktub, kiçik l,
biz ki, keçmək Bizim əsas növbəti index.
Hansı bir sıfır olan bir var shift yalnız olur
Bizim ciphertext bir l.
Sonra, biz düz metin həm inkişaf, və əsas index bu əlifba, çünki.
Beləliklə, biz davam biz kimi e almaq qədər.
>> Bu da görəcəksiniz ki, bütün sağ, Bizim əsas indeksi baxımından ki, qeyd,
biz sonunda əldə etdiyiniz panda söz belə nə
biz növbəti almaq zaman olur düz metin əlifba məktub?
Bəli, olur ki, bütün biz əvvəlinə ətrafında kesmek,
Bizim əsas ilk index.
Belə ki, sonra biz keçmək P y bizə n vermək.
Və sonra, biz encoding başa davam Bizim düz metin x lvne Noh almaq üçün.
>> Bu, məsələn, mən yalnız inkişaf göstərdi ki,
söz növbəti məktub əgər düz mətn xarakter
isalpha belə bir məktub funksiyası burada lazımlı olacaq.
Və yalnız Sezar kimi, biz istəyirik halda, isupper və islower qorumaq.
Belə ki, bu az əlavə Sizin pseudocode daxil.
>> Belə ki, necə biz əsas növbədə anlamaq edirsiniz?
Bəli, bizim müzakirə geri əgər Sezar əlifba göstəriciləri üzrə
problem, çox oxşar.
>> A ASCII uyğun harada 65 dəyəri lakin 0 shift,
və sonra son məktubu əlifbası ilə, Z,
25 növbədə uyğundur.
Siz shift görəcəksiniz eyni olub-olmadığını
məktub yuxarı halda və ya aşağı haldır.
>> OK, belə ki, indi ki, anlamaq üçün necə
ədədi shift ki, bir xarakter uyğundur
Bizim tənlik geri imkan verir.
biz müxtəlif iki var Burada subscripts, i və j,
biz takip etmək istəyirəm bir işarə var düz metin həm mövqe
eləcə də söz bizim mövqeyi, belə ki, o iki ayrı dəyişənlər var
biz bir gözləməyə saxlamaq istəyirəm.
>> Bizim düz metin İndi, mövqe hər zaman artırmaq niyyətindədir,
belə ki, bir olacaq az daha düz irəli
mövqeyi söz fərqli olaraq, Biz bilirik ki, ətrafında kesmek var,
və bəzən arttırmayı, bəzən eyni qalmaq.
Belə ki, necə biz həyata nə funksionallığı
ətrafında kesmek üçün söz üçün index?
>> Mən off saymaq nümunə istifadə gedirəm.
off hesablanması məşhur yoldur qrupa nəfər split.
De Mən 5 nəfər idi və mən istədi üç qrupa onları split,
də sonra off sayılması ilə başlayacaq.
ilk şəxs ki Mən komanda bir nömrəli deyiləm demək
növbəti nəfərlik qrup sayı ola bilər iki, üçüncü nəfərlik qrup sayı
üç.
İndi yalnız üç qruplar belə istəyirəm dördüncü şəxs həqiqətən ki
başında və demək, yaxşı, Mən də komanda bir nömrəli deyiləm,
və növbəti şəxs komanda sayı iki ola bilər.
Və oradan, onlar bilər onların qrupa ayırmaq.
>> Belə ki, necə modulo istifadə edə bilər Mənə həyata keçirmək üçün
Bu funksiya ətrafında paketi off saymaq?
Bəli, ilk şəxs 1 nömrəli, mod 3 US 1 verir.
2 mod 3 ABŞ 2 verir 3 mod 3 bizə 0 verir.
>> dördüncü şəxs, sayı 4, mod 3 US 1 verir, sonra 5 mod 3 Bizə 2 verir.
Belə ki, baxmayaraq ki, ki, görürsünüz Mən insanların sayı
artırır və yuxarıda 3-ci ildən 3 modding alıram
Mən həmişə nömrələri 0, 1, 2 almaq.
Mən 3-dən böyük almaq heç vaxt.
Beləliklə, mən 10 idi, hətta sonra insanlar, insanların bütün
hələ qrupları 1, 2, və ya 0 ərzində olacaq.
>> Belə ki, indi biz bilirik ki, biz bir qrup varsa 5 Biz 3 hamısı mod,
sonra biz heç vaxt olacaq qruplar 0, 1, 2 və ya artıq.
Belə ki, biz heç bir qrup almaq olacaq 3 və ya yuxarıda bərabər nömrəsi.
Belə ki, mən daha beş əlavə, hətta sonra insanlar, onların hamısı
hələ qrupları təyin olunacaq 0, 1 və ya 2 I 3 modding edirəm, çünki.
Mən heç vaxt cap artıq gedirəm.
>> OK, belə ki, biz müraciət edə bilərsiniz əgər in görək modulo istifadə bu anlayış
ətrafında kesmek üçün qrup nömrələri və tətbiq
istədiyimiz harada Vigenere üçün ətrafında kesmek üçün modulo istifadə
söz üçün index.
Hətta biz incrementing edirik olsa index həmişə
əmin həmişə biz etmək istəyirik əvvəldən ətrafında kesmek
heç-dən çox simli uzunluğu.
>> OK, belə ki, mən bu ola bilər bilirik bir az böyük.
Bu p set etmək üçün bir çox daha çox var.
Belə ki, yazmaq əmin olun Özünüz üçün bir yaxşı pseudocode
Siz anlamaq ki, ki, görülən iş alır.
Keçir və hər müraciət vahid xətt müstəqil
həyata figuring bütün kiçik Bu puzzle kiçik ədəd
birlikdə qoyulması əvvəl.
>> əldə edə bilərsiniz əmin olun command line əsas
və bu əlifba var ki, təmin istifadəçi düz mətn almaq,
və sonra şifrləmə, siz əmin olun bir məktub encipher üçün necə,
və sonra bütün simli tərəqqi funksiyaları ətrafında paketi bütün.
Nəhayət, ciphertext çap edə bilərsiniz.
>> My name, bir Zamyla bu Vigenere idi.