1 00:00:00,000 --> 00:00:10,101 >> [音樂播放] 2 00:00:10,101 --> 00:00:12,700 >> ZAMYLA陳:讓我們來實現 的vigenere,一個稍微更 3 00:00:12,700 --> 00:00:14,710 比撒安全的密碼。 4 00:00:14,710 --> 00:00:19,670 純文本加密 一個字符串,而不是一個整數。 5 00:00:19,670 --> 00:00:22,970 每個字母字符 純文本偏移了 6 00:00:22,970 --> 00:00:24,450 信中的關鍵字。 7 00:00:24,450 --> 00:00:30,860 >> 在這個例子中,關鍵字ohai,O 對應於一個移位14,H到 8 00:00:30,860 --> 00:00:36,910 7轉移,移 0和I 8的轉變。 9 00:00:36,910 --> 00:00:40,710 如果你已經成功地實現 凱撒密碼,它會是一個不錯的 10 00:00:40,710 --> 00:00:43,510 您框架 可以實現VIGENERE。 11 00:00:43,510 --> 00:00:47,140 正如你可以看到,運行的Vlgenere 一個單一的字符作為密碼 12 00:00:47,140 --> 00:00:51,830 關鍵字是一樣的東西 作為凱撒密碼。 13 00:00:51,830 --> 00:00:55,170 >> 同樣的步驟適用於VIGENERE的 因為他們沒有在凱撒。 14 00:00:55,170 --> 00:01:01,240 關鍵字是第二個命令行 的說法,所以你訪問它與argv1。 15 00:01:01,240 --> 00:01:05,400 然後,你需要驗證的關鍵 字是確實的所有字母。 16 00:01:05,400 --> 00:01:09,040 這裡是α 可以派上用場了。 17 00:01:09,040 --> 00:01:13,550 如果你有一個有效的關鍵字,你會得到 從用戶的實力,然後 18 00:01:13,550 --> 00:01:15,820 你準備進行加密。 19 00:01:15,820 --> 00:01:20,840 >> 類似VIGENERE密碼公式 凱撒式的,現在除了K表 20 00:01:20,840 --> 00:01:27,650 成為k下標J, 關鍵字的第j個信。 21 00:01:27,650 --> 00:01:29,640 讓我們一步步通過這個過程。 22 00:01:29,640 --> 00:01:34,060 說,你想發送一條消息到您的 崩潰,我喜歡你,但你不這樣做 23 00:01:34,060 --> 00:01:35,190 我想每個人都知道。 24 00:01:35,190 --> 00:01:39,800 因此,與您使用VIGENERE密碼 關鍵字熊貓,因為,你也 25 00:01:39,800 --> 00:01:41,160 喜歡大熊貓。 26 00:01:41,160 --> 00:01:47,140 >> 我的第一個字母,將被轉移 由P,X,我的15個字母後, 27 00:01:47,140 --> 00:01:52,850 因為15 p是16日 字母。 28 00:01:52,850 --> 00:01:56,750 在純文本的下一個字母 一個空格,這樣就不會被轉移。 29 00:01:56,750 --> 00:02:00,420 和索引關鍵字 不會改變。 30 00:02:00,420 --> 00:02:05,440 >> 然後以純文本的下一個字母 升,偏移了,不移位 31 00:02:05,440 --> 00:02:10,930 純文本信可言,因為 一個字母是0。 32 00:02:10,930 --> 00:02:14,980 這個過程一直持續,推進 關鍵字字符,每次有一個 33 00:02:14,980 --> 00:02:16,840 純文本的信件。 34 00:02:16,840 --> 00:02:21,850 一旦在關鍵字的最後一個字母 到達時,在關鍵字的環繞和 35 00:02:21,850 --> 00:02:25,890 轉移到下一平原的 由p的文字字母。 36 00:02:25,890 --> 00:02:27,170 X的lvne能。 37 00:02:27,170 --> 00:02:29,180 如何浪漫。 38 00:02:29,180 --> 00:02:33,120 >> 所以一個字符,你怎麼轉換 到相應 39 00:02:33,120 --> 00:02:34,590 密轉變呢? 40 00:02:34,590 --> 00:02:37,870 試著比較ASCII 值移位。 41 00:02:37,870 --> 00:02:41,530 也許你可以找到一個關係 字母和它們之間的 42 00:02:41,530 --> 00:02:44,550 字母索引使用ASCII數學。 43 00:02:44,550 --> 00:02:48,850 你可以添加或減去一個字符 從另一個 44 00:02:48,850 --> 00:02:51,630 你想要的結果嗎? 45 00:02:51,630 --> 00:02:55,480 >> 請記住,大寫的轉變 和小寫字母是相同的。 46 00:02:55,480 --> 00:02:59,510 因此,也許你需要識別兩個 類似的公式來表示 47 00:02:59,510 --> 00:03:03,570 移,一個一個大寫 關鍵字字符和一個 48 00:03:03,570 --> 00:03:06,510 為小寫的一個。 49 00:03:06,510 --> 00:03:10,630 >> 接下來,請記住,關鍵字的進步 如果字符 50 00:03:10,630 --> 00:03:13,520 純文本是一個字母, 的情況下的純 51 00:03:13,520 --> 00:03:16,020 必須保留文本。 52 00:03:16,020 --> 00:03:20,280 因此,如果我們看的公式 的vigenere移位,有兩個索引 53 00:03:20,280 --> 00:03:22,880 變量i和j。 54 00:03:22,880 --> 00:03:26,795 一個在平原的位置跟踪 文本,和其他的位置 55 00:03:26,795 --> 00:03:27,910 在關鍵字。 56 00:03:27,910 --> 00:03:32,960 但是,您的純文本可能會更長 比你的關鍵字,在這種情況下,你的 57 00:03:32,960 --> 00:03:38,290 關鍵字索引需要繞回 關鍵字的開頭。 58 00:03:38,290 --> 00:03:39,870 >> 你怎麼做到這一點? 59 00:03:39,870 --> 00:03:43,740 讓我們回頭看看 模運算符。 60 00:03:43,740 --> 00:03:47,280 模數的定義是餘數 ,除以兩個數字。 61 00:03:47,280 --> 00:03:50,680 但是,什麼是實際 使用模? 62 00:03:50,680 --> 00:03:54,340 >> 好吧,說你有一大群 人,和你需要分成 63 00:03:54,340 --> 00:03:55,100 三組。 64 00:03:55,100 --> 00:03:59,500 一種方式把人分成組 是有他們數。 65 00:03:59,500 --> 00:04:03,520 你的群組 數為1,2,和3。 66 00:04:03,520 --> 00:04:08,510 第一個人說, 在接下來的2,接下來的3。 67 00:04:08,510 --> 00:04:12,860 之後的人會說,1, 因為沒有一組4和 68 00:04:12,860 --> 00:04:15,880 從那裡開始計數。 69 00:04:15,880 --> 00:04:18,209 >> 您可以使用模 做同樣的事情。 70 00:04:18,209 --> 00:04:22,680 這一次,組 組0,1,和2。 71 00:04:22,680 --> 00:04:26,960 第一人稱,數 模3,是1。 72 00:04:26,960 --> 00:04:29,830 2人模3 2。 73 00:04:29,830 --> 00:04:32,460 3人模3為0。 74 00:04:32,460 --> 00:04:38,470 4人模3給出1,依此 組環繞。 75 00:04:38,470 --> 00:04:44,700 >> 所以,如果你把指數和模 該指數的最大尺寸, 76 00:04:44,700 --> 00:04:49,820 結果將永遠不會大於或 的大小相等,這意味著你 77 00:04:49,820 --> 00:04:52,330 可以增加索引 很多,只要你願意。 78 00:04:52,330 --> 00:04:57,400 而且只要你模指數 一些數字,你不會得到一個數字 79 00:04:57,400 --> 00:04:58,510 大於。 80 00:04:58,510 --> 00:05:04,500 因此,我們有10人,而不是5, 他們都將得到分配給組 81 00:05:04,500 --> 00:05:07,480 編號為0,1或2。 82 00:05:07,480 --> 00:05:11,680 >> 嘗試將此應用到包裝在 關鍵字,除了排序 83 00:05:11,680 --> 00:05:16,050 人成組號碼,你希​​望 關鍵字的索引,這樣就可以 84 00:05:16,050 --> 00:05:19,080 得到正確的字符 轉移不超過 85 00:05:19,080 --> 00:05:21,836 字符串的長度。 86 00:05:21,836 --> 00:05:24,790 就這樣,你有你 VIGENERE的密碼。 87 00:05:24,790 --> 00:05:27,790 我的名字是Zamyla,這是CS50。 88 00:05:27,790 --> 00:05:32,566