1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> ROB: Hi, saya Rob, dan mari kita menguraikan program Vigenere. 3 00:00:16,980 --> 00:00:21,180 Jadi hal pertama yang perlu kita lakukan adalah membuat Pastikan pengguna memasukkan apa yang kami harapkan 4 00:00:21,180 --> 00:00:23,240 mereka di garis Command. 5 00:00:23,240 --> 00:00:28,720 Jadi jika argc tidak 2 yang berarti baik pengguna tidak memasukkan string yang kita 6 00:00:28,720 --> 00:00:31,780 ingin menggunakan sebagai enkripsi kami tali, atau mereka 7 00:00:31,780 --> 00:00:32,890 memasukkan terlalu banyak hal. 8 00:00:32,890 --> 00:00:35,130 Dan kita tidak tahu apa yang harus dilakukan dengan hal-hal lain. 9 00:00:35,130 --> 00:00:37,960 >> Jadi kita memberitahu mereka apa yang mereka seharusnya sudah masuk. 10 00:00:37,960 --> 00:00:39,300 Dan kami kembali. 11 00:00:39,300 --> 00:00:44,570 Sekarang, dengan asumsi bahwa argc adalah 2, kita bisa melanjutkan sisa program. 12 00:00:44,570 --> 00:00:47,890 >> Kami alias nama argv [1] 13 00:00:47,890 --> 00:00:49,750 menjadi kata kunci variabel. 14 00:00:49,750 --> 00:00:51,860 Sehingga kita tidak perlu menggunakan nama argv [1] 15 00:00:51,860 --> 00:00:53,050 sepanjang sisa program. 16 00:00:53,050 --> 00:00:55,570 Dan mungkin kita akan melupakan apa yang yang berarti dan sebagainya. 17 00:00:55,570 --> 00:00:57,830 Kata kunci adalah nama yang jauh lebih baik. 18 00:00:57,830 --> 00:01:01,982 Dan kita akan segera ambil panjang kata kunci kami di sini. 19 00:01:01,982 --> 00:01:07,460 >> OK, jadi sekarang kita ingin memeriksa bahwa kata kunci kita sebenarnya berlaku. 20 00:01:07,460 --> 00:01:11,250 Kata kunci yang kita gunakan untuk mengenkripsi string hanya harus abjad 21 00:01:11,250 --> 00:01:12,400 karakter. 22 00:01:12,400 --> 00:01:16,830 Jika pengguna memasukkan non-abjad karakter, kita harus mengatakan, kata kunci 23 00:01:16,830 --> 00:01:20,170 harus hanya mengandung melalui A Z dan kemudian kembali. 24 00:01:20,170 --> 00:01:24,370 Jadi ini untuk loop iterates atas semua karakter dari kata kunci kami, memeriksa 25 00:01:24,370 --> 00:01:31,870 bahwa jika seseorang tidak abjad maka kita perlu untuk mencetak peringatan bahwa. 26 00:01:31,870 --> 00:01:36,285 >> Sekarang, setelah kita sampai ke titik ini, kita tahu bahwa string harus benar. 27 00:01:36,285 --> 00:01:38,230 Kata kunci harus benar. 28 00:01:38,230 --> 00:01:40,880 Dan sekarang kita perlu mendapatkan pesan dari pengguna bahwa mereka ingin kita 29 00:01:40,880 --> 00:01:43,910 mengenkripsi dengan frase kunci. 30 00:01:43,910 --> 00:01:46,780 Jadi untuk mendapatkan pesan bahwa, kita memiliki lakukan sementara loop yang akan 31 00:01:46,780 --> 00:01:52,650 terus mendapatkan string dari pengguna sampai mereka memasuki sebuah string yang valid. 32 00:01:52,650 --> 00:01:58,690 >> Melanjutkan, kita lihat di sini variabel ini, int nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 Kita akan melihat mengapa kita perlu bahwa dalam satu detik. 34 00:02:01,300 --> 00:02:07,320 Tapi ini untuk loop akan iterate dari i sama dengan 0 sepanjang jalan sampai ke i 35 00:02:07,320 --> 00:02:10,940 sama dengan n, yang berarti kita iterasi atas semua kemungkinan 36 00:02:10,940 --> 00:02:13,020 karakter dalam pesan kami. 37 00:02:13,020 --> 00:02:17,370 Karena kita ingin mengenkripsi semua karakter dalam pesan kita. 38 00:02:17,370 --> 00:02:22,970 Jadi perhatikan kita lakukan jika (isalphamessage [I], karena kita tidak ingin untuk mengenkripsi 39 00:02:22,970 --> 00:02:25,660 karakter yang tidak abjad. 40 00:02:25,660 --> 00:02:28,810 Jika ada simbol, spasi, atau angka, kita tidak 41 00:02:28,810 --> 00:02:30,730 ingin mengenkripsi mereka. 42 00:02:30,730 --> 00:02:37,220 >> Sekarang, dengan asumsi bahwa itu adalah abjad, pertama-tama kita ingin mencari tahu apa yang kita 43 00:02:37,220 --> 00:02:40,890 benar-benar ingin mengenkripsi pesan menggunakan. 44 00:02:40,890 --> 00:02:42,710 Jadi apa yang saya maksud dengan itu? 45 00:02:42,710 --> 00:02:46,740 >> Mari kita berasumsi bahwa frase kunci pengguna masuk adalah abc. 46 00:02:46,740 --> 00:02:49,070 Itulah apa yang kita gunakan untuk mengenkripsi. 47 00:02:49,070 --> 00:02:54,850 Sekarang, naif, kita berpikir bahwa berarti bahwa kita ingin mengenkripsi karakter pertama 48 00:02:54,850 --> 00:02:59,740 pesan kami dengan 0, karena sarana berputar karakter dengan 0. 49 00:02:59,740 --> 00:03:04,395 >> Kami ingin mengenkripsi karakter kedua dengan 1, karakter ketiga dengan 2, 50 00:03:04,395 --> 00:03:09,170 karakter keempat dengan 0, kelima by 1, keenam dengan 2, dan seterusnya. 51 00:03:09,170 --> 00:03:14,440 Tapi ingat, bahwa kita ingin melewatkan spasi dan simbol dan angka. 52 00:03:14,440 --> 00:03:21,520 Ini berarti bahwa jika pengguna sudah masuk hello world sebagai pesan 53 00:03:21,520 --> 00:03:26,590 bahwa mereka ingin mengenkripsi, kemudian kita ingin mengenkripsi h dengan 0 54 00:03:26,590 --> 00:03:32,680 sesuai dengan a, e dengan 1, l oleh 2, l dengan 0, o oleh 1. 55 00:03:32,680 --> 00:03:41,050 Kami ingin melewati ruang, terenkripsi yang w oleh 2, o oleh 0, 1, 2, 0. 56 00:03:41,050 --> 00:03:45,250 Jadi perhatikan, jika kita tidak melewatkan ruang, maka kita akan dienkripsi 57 00:03:45,250 --> 00:03:51,240 yang w oleh 0 dan berakhir dengan string yang salah. 58 00:03:51,240 --> 00:03:57,470 >> OK, ini adalah apa yang kita butuhkan variabel num_letters_seen untuk. 59 00:03:57,470 --> 00:04:04,450 Jika kita hanya akan mengenkripsi menggunakan Metode ini, yang tidak melewatkan 60 00:04:04,450 --> 00:04:09,860 simbol, spasi, dan angka, maka kita hanya bisa menggunakan variabel i sebagai apa 61 00:04:09,860 --> 00:04:12,540 untuk indeks ke frase kunci kami dengan. 62 00:04:12,540 --> 00:04:17,620 Kita harus menggunakan num_letters_seen untuk menjaga track dari tempat yang sebenarnya dalam 63 00:04:17,620 --> 00:04:21,146 frase kunci yang kita inginkan untuk mengindeks. 64 00:04:21,146 --> 00:04:32,240 Jadi di sini, jika kata kunci yang kita miliki, jika num_letter_seen keyword_length mod, jadi 65 00:04:32,240 --> 00:04:34,570 mengapa kita perlu mod dengan panjang kata kunci? 66 00:04:34,570 --> 00:04:36,630 >> Well, hello world adalah contoh yang baik. 67 00:04:36,630 --> 00:04:42,310 Jika kata kunci adalah abc, maka kita perlu untuk terus mengenkripsi oleh kemudian b 68 00:04:42,310 --> 00:04:45,740 kemudian c, kemudian bungkus kembali sekitar, a, b, c, a, b, c. 69 00:04:45,740 --> 00:04:50,110 Jadi kita perlu mod oleh panjang kata kunci dalam rangka untuk membungkus kembali sekitar. 70 00:04:50,110 --> 00:04:57,280 >> Jadi jika ini adalah huruf besar, maka kita ingin mengenkripsi oleh 71 00:04:57,280 --> 00:05:01,450 posisi surat dalam alfabet, yang kita dapatkan dengan hanya 72 00:05:01,450 --> 00:05:06,730 mengurangkan keluar modal A. Dan sama, untuk huruf kecil, kita 73 00:05:06,730 --> 00:05:13,000 bisa mendapatkan kunci yang kita inginkan dengan mengurangkan keluar huruf kecil a. 74 00:05:13,000 --> 00:05:16,910 Jadi terlepas dari apakah surat dalam frase kunci adalah modal atau 75 00:05:16,910 --> 00:05:21,640 huruf kecil, kita akan mengenkripsi dengan jumlah yang sama. 76 00:05:21,640 --> 00:05:28,680 >> Sekarang bahwa kita memiliki kunci kita, kita lihat di sini, bahwa jika pesan saya adalah huruf besar 77 00:05:28,680 --> 00:05:32,660 karakter, maka kita ingin menghitung posisi dalam abjad itu 78 00:05:32,660 --> 00:05:39,460 karakter, menambahkan kunci kami untuk itu, bungkus kembali sekitar sehingga jika kita pergi melewati 79 00:05:39,460 --> 00:05:43,170 z kita kembali ke a, b, c, dan seterusnya. 80 00:05:43,170 --> 00:05:49,070 Kemudian, akhirnya, tambahkan kembali modal A. Jadi kita beralih kembali ke [itu? Ascii?] 81 00:05:49,070 --> 00:05:52,010 berbagai karakter ini bukan posisi numerik dalam alfabet 82 00:05:52,010 --> 00:05:53,540 dari karakter ini. 83 00:05:53,540 --> 00:05:56,610 >> Dan kami melakukan hal yang sama untuk karakter huruf kecil. 84 00:05:56,610 --> 00:06:00,070 Kecuali kita ingin mengurangi keluar huruf kecil dan menambahkannya kembali di 85 00:06:00,070 --> 00:06:02,900 end, huruf kecil a. 86 00:06:02,900 --> 00:06:08,120 Perhatikan num_letter_seen yang hanya bertambah jika pesan saya adalah 87 00:06:08,120 --> 00:06:09,640 abjad. 88 00:06:09,640 --> 00:06:15,790 Ini adalah bagaimana kita lewati spasi, simbol, dan angka dalam frase kunci kami, karena 89 00:06:15,790 --> 00:06:20,520 num_letter_seen adalah apa yang kita gunakan untuk indeks ke kata kunci kami. 90 00:06:20,520 --> 00:06:24,540 >> Akhirnya, pada akhirnya, sekarang pesan yang i telah dienkripsi, kita 91 00:06:24,540 --> 00:06:26,280 mencetak pesan i. 92 00:06:26,280 --> 00:06:27,890 Dan itu saja. 93 00:06:27,890 --> 00:06:28,670 Nama saya Rob. 94 00:06:28,670 --> 00:06:31,020 Dan ini adalah Vigenere. 95 00:06:31,020 --> 00:06:32,850 >> [MUSIC PLAYING] 96 00:06:32,850 --> 00:06:36,651