[音樂播放] ZAMYLA陳:讓我們來實現 的vigenere,一個稍微更 比撒安全的密碼。 純文本加密 一個字符串,而不是一個整數。 每個字母字符 純文本偏移了 信中的關鍵字。 在這個例子中,關鍵字ohai,O 對應於一個移位14,H到 7轉移,移 0和I 8的轉變。 如果你已經成功地實現 凱撒密碼,它會是一個不錯的 您框架 可以實現VIGENERE。 正如你可以看到,運行的Vlgenere 一個單一的字符作為密碼 關鍵字是一樣的東西 作為凱撒密碼。 同樣的步驟適用於VIGENERE的 因為他們沒有在凱撒。 關鍵字是第二個命令行 的說法,所以你訪問它與argv1。 然後,你需要驗證的關鍵 字是確實的所有字母。 這裡是α 可以派上用場了。 如果你有一個有效的關鍵字,你會得到 從用戶的實力,然後 你準備進行加密。 類似VIGENERE密碼公式 凱撒式的,現在除了K表 成為k下標J, 關鍵字的第j個信。 讓我們一步步通過這個過程。 說,你想發送一條消息到您的 崩潰,我喜歡你,但你不這樣做 我想每個人都知道。 因此,與您使用VIGENERE密碼 關鍵字熊貓,因為,你也 喜歡大熊貓。 我的第一個字母,將被轉移 由P,X,我的15個字母後, 因為15 p是16日 字母。 在純文本的下一個字母 一個空格,這樣就不會被轉移。 和索引關鍵字 不會改變。 然後以純文本的下一個字母 升,偏移了,不移位 純文本信可言,因為 一個字母是0。 這個過程一直持續,推進 關鍵字字符,每次有一個 純文本的信件。 一旦在關鍵字的最後一個字母 到達時,在關鍵字的環繞和 轉移到下一平原的 由p的文字字母。 X的lvne能。 如何浪漫。 所以一個字符,你怎麼轉換 到相應 密轉變呢? 試著比較ASCII 值移位。 也許你可以找到一個關係 字母和它們之間的 字母索引使用ASCII數學。 你可以添加或減去一個字符 從另一個 你想要的結果嗎? 請記住,大寫的轉變 和小寫字母是相同的。 因此,也許你需要識別兩個 類似的公式來表示 移,一個一個大寫 關鍵字字符和一個 為小寫的一個。 接下來,請記住,關鍵字的進步 如果字符 純文本是一個字母, 的情況下的純 必須保留文本。 因此,如果我們看的公式 的vigenere移位,有兩個索引 變量i和j。 一個在平原的位置跟踪 文本,和其他的位置 在關鍵字。 但是,您的純文本可能會更長 比你的關鍵字,在這種情況下,你的 關鍵字索引需要繞回 關鍵字的開頭。 你怎麼做到這一點? 讓我們回頭看看 模運算符。 模數的定義是餘數 ,除以兩個數字。 但是,什麼是實際 使用模? 好吧,說你有一大群 人,和你需要分成 三組。 一種方式把人分成組 是有他們數。 你的群組 數為1,2,和3。 第一個人說, 在接下來的2,接下來的3。 之後的人會說,1, 因為沒有一組4和 從那裡開始計數。 您可以使用模 做同樣的事情。 這一次,組 組0,1,和2。 第一人稱,數 模3,是1。 2人模3 2。 3人模3為0。 4人模3給出1,依此 組環繞。 所以,如果你把指數和模 該指數的最大尺寸, 結果將永遠不會大於或 的大小相等,這意味著你 可以增加索引 很多,只要你願意。 而且只要你模指數 一些數字,你不會得到一個數字 大於。 因此,我們有10人,而不是5, 他們都將得到分配給組 編號為0,1或2。 嘗試將此應用到包裝在 關鍵字,除了排序 人成組號碼,你希​​望 關鍵字的索引,這樣就可以 得到正確的字符 轉移不超過 字符串的長度。 就這樣,你有你 VIGENERE的密碼。 我的名字是Zamyla,這是CS50。