[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.