1 00:00:00,000 --> 00:00:10,101 >> [Bermain muzik] 2 00:00:10,101 --> 00:00:12,700 >> ZAMYLA CHAN: Mari kita melaksanakan Vigenere, yang lebih sedikit 3 00:00:12,700 --> 00:00:14,710 mendapatkan cipher daripada Caesar. 4 00:00:14,710 --> 00:00:19,670 Teks biasa adalah enciphered menggunakan rentetan bukan integer. 5 00:00:19,670 --> 00:00:22,970 Setiap watak dalam abjad teks beralih oleh 6 00:00:22,970 --> 00:00:24,450 surat dalam kata kunci. 7 00:00:24,450 --> 00:00:30,860 >> Dalam contoh ini, kata kunci ohai, O sepadan dengan peralihan 14; H kepada 8 00:00:30,860 --> 00:00:36,910 beralih daripada 7; A, peralihan 0; dan saya peralihan 8. 9 00:00:36,910 --> 00:00:40,710 Jika anda telah berjaya dilaksanakan anda Caesar cipher, ia akan menjadi baik 10 00:00:40,710 --> 00:00:43,510 rangka kerja yang anda boleh melaksanakan Vigenere. 11 00:00:43,510 --> 00:00:47,140 Seperti yang anda lihat, berlari Vigenere a cipher dengan watak tunggal sebagai 12 00:00:47,140 --> 00:00:51,830 kata kunci adalah perkara yang sama sebagai cipher Caesar. 13 00:00:51,830 --> 00:00:55,170 >> Langkah yang sama memohon kepada Vigenere seperti yang mereka lakukan di Caesar. 14 00:00:55,170 --> 00:01:01,240 Kata kunci adalah baris arahan kedua hujah, jadi anda mengakses dengan argv1. 15 00:01:01,240 --> 00:01:05,400 Kemudian, anda perlu mengesahkan bahawa kunci perkataan adalah sesungguhnya semua abjad. 16 00:01:05,400 --> 00:01:09,040 Berikut adalah di mana alpha boleh datang dalam berguna. 17 00:01:09,040 --> 00:01:13,550 Jika anda mempunyai kata kunci yang sah, anda akan mendapat kekuatan dari pengguna, dan kemudian 18 00:01:13,550 --> 00:01:15,820 anda sudah bersedia untuk menulis dlm kod. 19 00:01:15,820 --> 00:01:20,840 >> The Vigenere formula cipher adalah sama untuk Caesar formula, kecuali kini k 20 00:01:20,840 --> 00:01:27,650 menjadi k subskrip j, menunjukkan huruf j-ke-kata kunci. 21 00:01:27,650 --> 00:01:29,640 Mari kita melangkah melalui proses ini. 22 00:01:29,640 --> 00:01:34,060 Katakanlah anda mahu menghantar mesej kepada anda kemalangan, saya suka anda, tetapi anda tidak 23 00:01:34,060 --> 00:01:35,190 mahu semua orang tahu. 24 00:01:35,190 --> 00:01:39,800 Jadi anda menggunakan cipher Vigenere dengan panda kata kunci, kerana, dengan baik, anda juga 25 00:01:39,800 --> 00:01:41,160 suka panda. 26 00:01:41,160 --> 00:01:47,140 >> Surat pertama, saya akan beralih oleh p, memberi x, 15 huruf selepas saya, 27 00:01:47,140 --> 00:01:52,850 kerana 15 p adalah 16 huruf abjad. 28 00:01:52,850 --> 00:01:56,750 Surat seterusnya dalam teks biasa adalah ruang, supaya tidak akan beralih. 29 00:01:56,750 --> 00:02:00,420 Dan indeks kata kunci tidak akan berubah. 30 00:02:00,420 --> 00:02:05,440 >> Kemudian huruf seterusnya dalam teks biasa adalah l, beralih oleh, yang tidak beralih 31 00:02:05,440 --> 00:02:10,930 surat teks kosong sama sekali, kerana adalah surat 0 abjad. 32 00:02:10,930 --> 00:02:14,980 Proses ini berterusan, memajukan watak kata kunci setiap kali ada 33 00:02:14,980 --> 00:02:16,840 surat dalam teks biasa. 34 00:02:16,840 --> 00:02:21,850 Apabila huruf terakhir kata kunci adalah dicapai, kata kunci membalut sekitar dan 35 00:02:21,850 --> 00:02:25,890 perubahan ke dataran seterusnya surat teks dengan p. 36 00:02:25,890 --> 00:02:27,170 X lvne noh. 37 00:02:27,170 --> 00:02:29,180 Bagaimana romantis. 38 00:02:29,180 --> 00:02:33,120 >> Jadi diberikan watak, bagaimana anda menukar itu ke dalam yang sama 39 00:02:33,120 --> 00:02:34,590 Cipher peralihan? 40 00:02:34,590 --> 00:02:37,870 Cuba membandingkan ASCII nilai kepada peralihan. 41 00:02:37,870 --> 00:02:41,530 Mungkin anda boleh mencari hubungan antara huruf dan mereka 42 00:02:41,530 --> 00:02:44,550 indeks abjad matematik menggunakan ASCII. 43 00:02:44,550 --> 00:02:48,850 Bolehkah anda menambah atau menolak satu watak daripada yang lain untuk mendapatkan 44 00:02:48,850 --> 00:02:51,630 anda hasil yang dikehendaki? 45 00:02:51,630 --> 00:02:55,480 >> Ingat bahawa perubahan untuk huruf besar dan huruf kecil yang sama. 46 00:02:55,480 --> 00:02:59,510 Jadi mungkin anda perlu mengenal pasti dua formula yang sama untuk mewakili 47 00:02:59,510 --> 00:03:03,570 peralihan, satu untuk huruf besar watak kata kunci, dan satu 48 00:03:03,570 --> 00:03:06,510 untuk satu yang kecil. 49 00:03:06,510 --> 00:03:10,630 >> Seterusnya, ingat bahawa kemajuan kata kunci hanya jika watak dalam 50 00:03:10,630 --> 00:03:13,520 teks biasa adalah surat dan kes biasa 51 00:03:13,520 --> 00:03:16,020 teks mesti dipelihara. 52 00:03:16,020 --> 00:03:20,280 Jadi, jika kita melihat formula bagi Anjakan Vigenere, terdapat dua indeks 53 00:03:20,280 --> 00:03:22,880 pembolehubah, i dan j. 54 00:03:22,880 --> 00:03:26,795 Satu menjejaki kedudukan di dataran teks, dan lain-lain jawatan 55 00:03:26,795 --> 00:03:27,910 dalam kata kunci. 56 00:03:27,910 --> 00:03:32,960 Tetapi teks anda mungkin lebih lama daripada kata kunci anda, di mana anda 57 00:03:32,960 --> 00:03:38,290 indeks kata kunci yang perlu untuk membalut di sekitar belakang untuk permulaan kata kunci. 58 00:03:38,290 --> 00:03:39,870 >> Bagaimana anda melakukan ini? 59 00:03:39,870 --> 00:03:43,740 Mari kita lihat kembali pada operator modulo. 60 00:03:43,740 --> 00:03:47,280 Modulo ditakrifkan adalah bakinya membahagikan dua nombor. 61 00:03:47,280 --> 00:03:50,680 Tetapi apa yang praktikal sebenar menggunakan modulo? 62 00:03:50,680 --> 00:03:54,340 >> Nah, katakan anda mempunyai kumpulan besar orang, dan anda perlu untuk membahagikan ke 63 00:03:54,340 --> 00:03:55,100 tiga kumpulan. 64 00:03:55,100 --> 00:03:59,500 Salah satu cara untuk membahagikan orang-orang ke dalam kumpulan adalah untuk mereka mengira off. 65 00:03:59,500 --> 00:04:03,520 Anda nombor kumpulan kumpulan-kumpulan yang nombor 1, 2, dan 3. 66 00:04:03,520 --> 00:04:08,510 Orang pertama yang akan berkata 1, 2 seterusnya, 3 seterusnya. 67 00:04:08,510 --> 00:04:12,860 Orang yang selepas itu akan berkata 1, kerana tidak ada satu kumpulan 4, dan 68 00:04:12,860 --> 00:04:15,880 kiraan bermula lebih dari sana. 69 00:04:15,880 --> 00:04:18,209 >> Anda boleh menggunakan modulo untuk melakukan perkara yang sama. 70 00:04:18,209 --> 00:04:22,680 Kali ini, kumpulan-kumpulan akan menjadi kumpulan 0, 1, dan 2. 71 00:04:22,680 --> 00:04:26,960 Orang yang pertama, nombor 1 modulo 3, 1. 72 00:04:26,960 --> 00:04:29,830 Orang 2 modulo 3 ialah 2. 73 00:04:29,830 --> 00:04:32,460 Orang 3 modulo 3 adalah 0. 74 00:04:32,460 --> 00:04:38,470 Orang modulo 4 3 memberikan 1, dan sebagainya kumpulan boleh membalut di sekitar. 75 00:04:38,470 --> 00:04:44,700 >> Jadi, jika anda mengambil indeks dan modulo indeks yang oleh saiz maksimum, 76 00:04:44,700 --> 00:04:49,820 hasil tidak akan lebih besar daripada atau sama dengan saiz, yang bermaksud bahawa anda 77 00:04:49,820 --> 00:04:52,330 boleh meningkatkan indeks sebagai banyak yang anda suka. 78 00:04:52,330 --> 00:04:57,400 Dan selagi anda modulo indeks oleh bilangan tertentu, anda tidak akan mendapatkan nombor 79 00:04:57,400 --> 00:04:58,510 yang lebih besar daripada itu. 80 00:04:58,510 --> 00:05:04,500 Oleh itu, kita mempunyai 10 orang bukan 5, dan mereka semua akan mendapat yang diberikan kepada kumpulan-kumpulan 81 00:05:04,500 --> 00:05:07,480 bilangan 0, 1, atau 2. 82 00:05:07,480 --> 00:05:11,680 >> Cuba untuk memohon ini untuk membungkus seluruh kata kunci, kecuali bukannya menyusun 83 00:05:11,680 --> 00:05:16,050 orang ke nombor kumpulan yang anda mahu indeks kata kunci supaya anda boleh 84 00:05:16,050 --> 00:05:19,080 mendapatkan watak yang betul untuk beralih tanpa melebihi 85 00:05:19,080 --> 00:05:21,836 panjang tali. 86 00:05:21,836 --> 00:05:24,790 Dengan itu, anda perlu anda Vigenere cipher. 87 00:05:24,790 --> 00:05:27,790 Nama saya Zamyla, dan ini adalah CS50. 88 00:05:27,790 --> 00:05:32,566