>> ROB: Hi, saya Rob, dan mari kita menguraikan program Vigenere.
Jadi hal pertama yang perlu kita lakukan adalah membuat Pastikan pengguna memasukkan apa yang kami harapkan
mereka di garis Command.
Jadi jika argc tidak 2 yang berarti baik pengguna tidak memasukkan string yang kita
ingin menggunakan sebagai enkripsi kami tali, atau mereka
memasukkan terlalu banyak hal.
Dan kita tidak tahu apa yang harus dilakukan dengan hal-hal lain.
>> Jadi kita memberitahu mereka apa yang mereka seharusnya sudah masuk.
Dan kami kembali.
Sekarang, dengan asumsi bahwa argc adalah 2, kita bisa melanjutkan sisa program.
>> Kami alias nama argv [1]
menjadi kata kunci variabel.
Sehingga kita tidak perlu menggunakan nama argv [1]
sepanjang sisa program.
Dan mungkin kita akan melupakan apa yang yang berarti dan sebagainya.
Kata kunci adalah nama yang jauh lebih baik.
Dan kita akan segera ambil panjang kata kunci kami di sini.
>> OK, jadi sekarang kita ingin memeriksa bahwa kata kunci kita sebenarnya berlaku.
Kata kunci yang kita gunakan untuk mengenkripsi string hanya harus abjad
karakter.
Jika pengguna memasukkan non-abjad karakter, kita harus mengatakan, kata kunci
harus hanya mengandung melalui A Z dan kemudian kembali.
Jadi ini untuk loop iterates atas semua karakter dari kata kunci kami, memeriksa
bahwa jika seseorang tidak abjad maka kita perlu untuk mencetak peringatan bahwa.
>> Sekarang, setelah kita sampai ke titik ini, kita tahu bahwa string harus benar.
Kata kunci harus benar.
Dan sekarang kita perlu mendapatkan pesan dari pengguna bahwa mereka ingin kita
mengenkripsi dengan frase kunci.
Jadi untuk mendapatkan pesan bahwa, kita memiliki lakukan sementara loop yang akan
terus mendapatkan string dari pengguna sampai mereka memasuki sebuah string yang valid.
>> Melanjutkan, kita lihat di sini variabel ini, int nun_letters_seen.
Kita akan melihat mengapa kita perlu bahwa dalam satu detik.
Tapi ini untuk loop akan iterate dari i sama dengan 0 sepanjang jalan sampai ke i
sama dengan n, yang berarti kita iterasi atas semua kemungkinan
karakter dalam pesan kami.
Karena kita ingin mengenkripsi semua karakter dalam pesan kita.
Jadi perhatikan kita lakukan jika (isalphamessage [I], karena kita tidak ingin untuk mengenkripsi
karakter yang tidak abjad.
Jika ada simbol, spasi, atau angka, kita tidak
ingin mengenkripsi mereka.
>> Sekarang, dengan asumsi bahwa itu adalah abjad, pertama-tama kita ingin mencari tahu apa yang kita
benar-benar ingin mengenkripsi pesan menggunakan.
Jadi apa yang saya maksud dengan itu?
>> Mari kita berasumsi bahwa frase kunci pengguna masuk adalah abc.
Itulah apa yang kita gunakan untuk mengenkripsi.
Sekarang, naif, kita berpikir bahwa berarti bahwa kita ingin mengenkripsi karakter pertama
pesan kami dengan 0, karena sarana berputar karakter dengan 0.
>> Kami ingin mengenkripsi karakter kedua dengan 1, karakter ketiga dengan 2,
karakter keempat dengan 0, kelima by 1, keenam dengan 2, dan seterusnya.
Tapi ingat, bahwa kita ingin melewatkan spasi dan simbol dan angka.
Ini berarti bahwa jika pengguna sudah masuk hello world sebagai pesan
bahwa mereka ingin mengenkripsi, kemudian kita ingin mengenkripsi h dengan 0
sesuai dengan a, e dengan 1, l oleh 2, l dengan 0, o oleh 1.
Kami ingin melewati ruang, terenkripsi yang w oleh 2, o oleh 0, 1, 2, 0.
Jadi perhatikan, jika kita tidak melewatkan ruang, maka kita akan dienkripsi
yang w oleh 0 dan berakhir dengan string yang salah.
>> OK, ini adalah apa yang kita butuhkan variabel num_letters_seen untuk.
Jika kita hanya akan mengenkripsi menggunakan Metode ini, yang tidak melewatkan
simbol, spasi, dan angka, maka kita hanya bisa menggunakan variabel i sebagai apa
untuk indeks ke frase kunci kami dengan.
Kita harus menggunakan num_letters_seen untuk menjaga track dari tempat yang sebenarnya dalam
frase kunci yang kita inginkan untuk mengindeks.
Jadi di sini, jika kata kunci yang kita miliki, jika num_letter_seen keyword_length mod, jadi
mengapa kita perlu mod dengan panjang kata kunci?
>> Well, hello world adalah contoh yang baik.
Jika kata kunci adalah abc, maka kita perlu untuk terus mengenkripsi oleh kemudian b
kemudian c, kemudian bungkus kembali sekitar, a, b, c, a, b, c.
Jadi kita perlu mod oleh panjang kata kunci dalam rangka untuk membungkus kembali sekitar.
>> Jadi jika ini adalah huruf besar, maka kita ingin mengenkripsi oleh
posisi surat dalam alfabet, yang kita dapatkan dengan hanya
mengurangkan keluar modal A. Dan sama, untuk huruf kecil, kita
bisa mendapatkan kunci yang kita inginkan dengan mengurangkan keluar huruf kecil a.
Jadi terlepas dari apakah surat dalam frase kunci adalah modal atau
huruf kecil, kita akan mengenkripsi dengan jumlah yang sama.
>> Sekarang bahwa kita memiliki kunci kita, kita lihat di sini, bahwa jika pesan saya adalah huruf besar
karakter, maka kita ingin menghitung posisi dalam abjad itu
karakter, menambahkan kunci kami untuk itu, bungkus kembali sekitar sehingga jika kita pergi melewati
z kita kembali ke a, b, c, dan seterusnya.
Kemudian, akhirnya, tambahkan kembali modal A. Jadi kita beralih kembali ke [itu? Ascii?]
berbagai karakter ini bukan posisi numerik dalam alfabet
dari karakter ini.
>> Dan kami melakukan hal yang sama untuk karakter huruf kecil.
Kecuali kita ingin mengurangi keluar huruf kecil dan menambahkannya kembali di
end, huruf kecil a.
Perhatikan num_letter_seen yang hanya bertambah jika pesan saya adalah
abjad.
Ini adalah bagaimana kita lewati spasi, simbol, dan angka dalam frase kunci kami, karena
num_letter_seen adalah apa yang kita gunakan untuk indeks ke kata kunci kami.
>> Akhirnya, pada akhirnya, sekarang pesan yang i telah dienkripsi, kita
mencetak pesan i.
Dan itu saja.
Nama saya Rob.
Dan ini adalah Vigenere.
>> [MUSIC PLAYING]