>> [MUSIC PLAYING]
>> ZAMYLA CHAN: Mari kita menerapkan Vigenere, sedikit lebih
mengamankan cipher dari Caesar.
Teks biasa dienkripsi dengan menggunakan string bukan integer.
Setiap karakter abjad di teks biasa digeser oleh
huruf dalam kata kunci.
>> Dalam contoh ini, kata kunci ohai, O sesuai dengan pergeseran 14; H ke
bergeser dari 7; A, pergeseran 0, dan saya pergeseran 8.
Jika Anda telah berhasil dilaksanakan Anda Caesar cipher, itu akan menjadi bagus
kerangka dari mana Anda dapat mengimplementasikan Vigenere.
Seperti yang Anda lihat, menjalankan sebuah Vigenere cipher dengan karakter tunggal sebagai
kata kunci adalah hal yang sama sebagai cipher Caesar.
>> Langkah yang sama berlaku untuk Vigenere seperti yang mereka lakukan di Caesar.
Kata kunci adalah baris perintah kedua argumen, sehingga Anda mengaksesnya dengan argv1.
Kemudian Anda perlu untuk memverifikasi bahwa kunci Kata memang semua abjad.
Di sinilah adalah alpha dapat berguna.
Jika Anda memiliki kata kunci yang valid, Anda mendapatkan kekuatan dari pengguna, dan kemudian
Anda siap untuk menulis dlm kode.
>> The Vigenere cipher Rumus mirip kepada Kaisar rumus, kecuali sekarang k
menjadi k subscript j, menunjukkan surat j kata kunci.
Mari kita langkah melalui proses ini.
Katakanlah Anda ingin mengirim pesan ke Anda kecelakaan, aku menyukaimu, tapi Anda tidak
ingin semua orang tahu.
Jadi Anda menggunakan cipher Vigenere dengan kata kunci panda, karena, well, Anda juga
seperti panda.
>> Surat pertama, saya, akan bergeser oleh p, memberikan x, 15 huruf setelah saya,
karena 15 p adalah tanggal 16 huruf alfabet.
Huruf berikutnya dalam teks biasa spasi, sehingga tidak akan bergeser.
Dan indeks kata kunci tidak akan berubah.
>> Kemudian huruf berikutnya dalam teks biasa adalah l, digeser oleh, yang tidak bergeser
surat teks biasa sama sekali, karena adalah huruf ke-0 dari alfabet.
Proses berlanjut, memajukan karakter kata kunci setiap kali ada
huruf dalam teks biasa.
Setelah huruf terakhir pada kata kunci adalah tercapai, kata kunci membungkus di sekitar dan
bergeser ke dataran berikutnya Surat teks dengan p.
X lvne noh.
Bagaimana romantis.
>> Jadi mengingat karakter, bagaimana Anda mengkonversi yang ke yang sesuai
cipher pergeseran?
Cobalah membandingkan ASCII nilai ke shift.
Mungkin Anda dapat menemukan hubungan antara huruf dan mereka
indeks alfabet menggunakan matematika ASCII.
Dapatkah Anda menambah atau mengurangi satu karakter dari yang lain untuk mendapatkan
hasil yang diinginkan?
>> Ingat bahwa pergeseran untuk huruf besar dan huruf kecil adalah sama.
Jadi mungkin Anda harus mengidentifikasi dua rumus yang sama untuk mewakili
shift, satu untuk huruf besar karakter kata kunci, dan satu
untuk satu huruf kecil.
>> Selanjutnya, ingat bahwa kemajuan kata kunci hanya jika karakter dalam
teks biasa adalah surat dan kasus dataran
teks harus dilestarikan.
Jadi jika kita melihat rumus untuk Pergeseran Vigenere, ada dua indeks
variabel, i dan j.
Salah melacak posisi di dataran teks, dan lain posisi
dalam kata kunci.
Tapi teks biasa Anda mungkin lebih lama dari kata kunci Anda, dalam hal ini Anda
Indeks kata kunci perlu membungkus kembali ke awal kata kunci.
>> Bagaimana Anda melakukan ini?
Mari kita melihat kembali pada Operator modulo.
Modulo didefinisikan adalah sisanya membagi dua nomor.
Tapi apa yang sebenarnya praktis penggunaan modulo?
>> Nah, katakanlah Anda memiliki kelompok besar orang, dan Anda perlu untuk membagi menjadi
tiga kelompok.
Salah satu cara untuk membagi orang ke dalam kelompok adalah memiliki mereka menghitung off.
Anda nomor kelompok kelompok nomor 1, 2, dan 3.
Orang pertama akan mengatakan 1, 2 berikutnya, 3 berikutnya.
Orang setelah itu akan mengatakan 1, karena tidak ada kelompok 4, dan
count mulai alih dari sana.
>> Anda dapat menggunakan Modulo untuk melakukan hal yang sama.
Kali ini, kelompok akan menjadi kelompok 0, 1, dan 2.
Orang pertama, nomor 1 modulo 3, 1.
Orang 2 modulo 3 adalah 2.
Orang 3 modulo 3 adalah 0.
Orang 4 modulo 3 memberikan 1, dan sebagainya kelompok dapat membungkus.
>> Jadi, jika Anda mengambil indeks dan modulo bahwa indeks oleh ukuran maksimum,
Hasilnya tidak akan pernah lebih besar dari atau sama dengan ukuran, yang berarti bahwa Anda
dapat meningkatkan indeks sebagai sebanyak yang Anda inginkan.
Dan selama Anda modulo indeks dengan beberapa nomor, Anda tidak akan mendapatkan nomor
lebih besar dari itu.
Jadi kita memiliki 10 orang, bukan 5, dan mereka semua akan bisa ditugaskan untuk kelompok
angka 0, 1, atau 2.
>> Cobalah untuk menerapkan ini untuk membungkus atas kata kunci, kecuali bukan pemilahan
orang ke nomor kelompok Anda ingin indeks kata kunci sehingga Anda dapat
mendapatkan karakter yang tepat untuk bergeser tanpa melebihi
panjang string.
Dengan itu, Anda memiliki Anda Vigenere cipher.
Nama saya Zamyla, dan ini adalah CS50.