1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> ROB: Hi, მე რობ, და მოდით decipher Vigenere პროგრამა. 3 00:00:16,980 --> 00:00:21,180 ასე რომ, პირველი, რაც უნდა გავაკეთოთ არის მიიღოს დარწმუნებული პროფაილი შევიდა, რასაც ველოდით 4 00:00:21,180 --> 00:00:23,240 მათ ბრძანებათა ზოლს. 5 00:00:23,240 --> 00:00:28,720 ასე რომ, თუ argc არ არის 2 ეს ნიშნავს, რომ არც მომხმარებელს არ შესულხართ სიმებიანი ჩვენ 6 00:00:28,720 --> 00:00:31,780 მინდა იყოს გამოყენებით, როგორც ჩვენი Encrypting string, ან მათ 7 00:00:31,780 --> 00:00:32,890 შევიდა ძალიან ბევრი რამ. 8 00:00:32,890 --> 00:00:35,130 და ჩვენ არ ვიცით, რა უნდა გააკეთოს იმ სხვა რამ. 9 00:00:35,130 --> 00:00:37,960 >> ასე რომ, ჩვენ ვეუბნებით მათ, რაც მათ უნდა შევიდნენ. 10 00:00:37,960 --> 00:00:39,300 და ჩვენ დაბრუნდება. 11 00:00:39,300 --> 00:00:44,570 ახლა, ვთქვათ, რომ argc 2, ჩვენ შეგვიძლია გავაგრძელოთ დანარჩენი პროგრამა. 12 00:00:44,570 --> 00:00:47,890 >> ჩვენ Alias ​​სახელი argv [1] 13 00:00:47,890 --> 00:00:49,750 თარგმნეს ცვლადი სიტყვით. 14 00:00:49,750 --> 00:00:51,860 ასე, რომ ჩვენ არ უნდა სახელწოდების გამოყენება argv [1] 15 00:00:51,860 --> 00:00:53,050 მთელი დანარჩენი პროგრამა. 16 00:00:53,050 --> 00:00:55,570 და იქნებ ჩვენ დაგვავიწყდეს, თუ რა ეს იმას ნიშნავს, და ასე შემდეგ. 17 00:00:55,570 --> 00:00:57,830 საკვანძო სიტყვა არის ბევრად გავალამაზოთ სახელი. 18 00:00:57,830 --> 00:01:01,982 და ჩვენ დაუყოვნებლივ დაიბრუნოს ხანგრძლივობა ჩვენი სიტყვით უფლება აქ. 19 00:01:01,982 --> 00:01:07,460 >> OK, ასე რომ, ახლა ჩვენ გვინდა, რომ შეამოწმოს, რომ ჩვენი სიტყვით არის რეალურად მოქმედებს. 20 00:01:07,460 --> 00:01:11,250 სიტყვით ვიყენებთ დაშიფვრა strings უნდა იყოს მხოლოდ ანბანური 21 00:01:11,250 --> 00:01:12,400 სიმბოლო. 22 00:01:12,400 --> 00:01:16,830 თუ მომხმარებლის შევიდნენ არასამთავრობო ანბანური პერსონაჟი, უნდა ითქვას, სიტყვით 23 00:01:16,830 --> 00:01:20,170 უნდა შეიცავდეს მხოლოდ მეშვეობით Z და შემდეგ დაბრუნდნენ. 24 00:01:20,170 --> 00:01:24,370 ასე რომ, ამ for loop iterates მეტი ყველა გმირები ჩვენი სიტყვით, შემოწმების 25 00:01:24,370 --> 00:01:31,870 იმ შემთხვევაში, თუ ერთი არ არის ანბანური შემდეგ ჩვენ უნდა ამობეჭდოთ, რომ გაფრთხილება. 26 00:01:31,870 --> 00:01:36,285 >> ახლა, როდესაც ჩვენ კიდევ ამ ეტაპზე, ჩვენ ვიცით, რომ სიმებიანი უნდა იყოს სწორი. 27 00:01:36,285 --> 00:01:38,230 სიტყვით უნდა იყოს სწორი. 28 00:01:38,230 --> 00:01:40,880 და ახლა ჩვენ უნდა მიიღოს გზავნილი მომხმარებელს, რომ მათ სურთ, რომ 29 00:01:40,880 --> 00:01:43,910 დაშიფვრა, რომ გასაღები ფრაზა. 30 00:01:43,910 --> 00:01:46,780 ასე რომ მიიღოს, რომ გაგზავნა, ჩვენ გვაქვს გავაკეთოთ ხოლო loop რომ აპირებს 31 00:01:46,780 --> 00:01:52,650 მუდმივად მიიღოს სიმებიანი საწყისი მომხმარებელი სანამ ისინი შეიყვანოთ სწორი string. 32 00:01:52,650 --> 00:01:58,690 >> გრძელდება, აქ ვხედავთ ამ ცვლადი, int nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 ჩვენ დავინახავთ, თუ რატომ გვჭირდება რომ მეორე. 34 00:02:01,300 --> 00:02:07,320 მაგრამ ამ for loop აპირებს iterate ეხლა i უდრის 0 ყველა გზა მდე i 35 00:02:07,320 --> 00:02:10,940 უდრის n, რაც იმას ნიშნავს, რომ ჩვენ iterating ყველა შესაძლო 36 00:02:10,940 --> 00:02:13,020 გმირები ჩვენს გაგზავნა. 37 00:02:13,020 --> 00:02:17,370 იმის გამო, რომ ჩვენ გვინდა, რომ დაშიფვრა ყველა გმირები ჩვენს გაგზავნა. 38 00:02:17,370 --> 00:02:22,970 ასე რომ შეამჩნია გავაკეთოთ, თუ (isalphamessage [I], იმიტომ, რომ ჩვენ არ გვინდა, რომ დაშიფვრა 39 00:02:22,970 --> 00:02:25,660 გმირები, რომლებიც არ არიან ანბანური. 40 00:02:25,660 --> 00:02:28,810 თუ არსებობს სიმბოლოები, ფართები, ან ციფრები, ჩვენ არ 41 00:02:28,810 --> 00:02:30,730 გსურთ დაშიფვრა იმ. 42 00:02:30,730 --> 00:02:37,220 >> ახლა, ვთქვათ, რომ ეს არის ანბანური, ჩვენ პირველად მინდა გაერკვნენ, რა ჩვენ 43 00:02:37,220 --> 00:02:40,890 ნამდვილად გინდათ დაშიფროთ გაგზავნა გამოყენებით. 44 00:02:40,890 --> 00:02:42,710 ასე რომ, რას ვგულისხმობ მიერ რომ? 45 00:02:42,710 --> 00:02:46,740 >> მოდით ვივარაუდოთ, რომ გასაღები ფრაზა მომხმარებლის შემოვიდა იყო abc. 46 00:02:46,740 --> 00:02:49,070 ის, რაც ჩვენ გამოყენებით დაშიფვრა. 47 00:02:49,070 --> 00:02:54,850 ახლა კი, გულუბრყვილოდ, ჩვენ ვფიქრობთ, ეს იმას ნიშნავს რომ ჩვენ გვინდა, რომ დაშიფვრა პირველი ხასიათი 48 00:02:54,850 --> 00:02:59,740 ჩვენი გზავნილი 0, რადგან საშუალება მოძრავი ხასიათი 0. 49 00:02:59,740 --> 00:03:04,395 >> ჩვენ გვინდა, რომ დაშიფვრა მეორე სიმბოლო 1, მესამე ხასიათი 2, 50 00:03:04,395 --> 00:03:09,170 მეოთხე ხასიათი: 0, მეხუთე 1, მეექვსე 2, და ასე შემდეგ. 51 00:03:09,170 --> 00:03:14,440 მაგრამ გახსოვდეთ, რომ ჩვენ გვინდა გამოტოვოთ ფართები და სიმბოლოები და ციფრები. 52 00:03:14,440 --> 00:03:21,520 ეს ნიშნავს, რომ თუ მომხმარებელი შევიდნენ Hello World როგორც გაგზავნა 53 00:03:21,520 --> 00:03:26,590 რომ მათ სურთ დაშიფვრა, მაშინ ჩვენ გვინდა, რომ დაშიფვრა თ 0 54 00:03:26,590 --> 00:03:32,680 შესაბამისი, ელექტრონული 1, ლ by 2 ლ: 0, o 1. 55 00:03:32,680 --> 00:03:41,050 ჩვენ გვინდა, რომ გამოტოვეთ ინტერვალი, დაშიფრული w 2, o: 0, 1, 2, 0. 56 00:03:41,050 --> 00:03:45,250 ასე რომ შეამჩნია, თუ ჩვენ არ გამოტოვებენ სივრცეში, მაშინ ჩვენ არ დაშიფრული 57 00:03:45,250 --> 00:03:51,240 w 0 და დასრულდა არასწორი string. 58 00:03:51,240 --> 00:03:57,470 >> OK, ეს არის ის, რაც ჩვენ გვჭირდება ცვლადი num_letters_seen ამისთვის. 59 00:03:57,470 --> 00:04:04,450 თუ ჩვენ უბრალოდ აპირებს დაშიფვრა გამოყენებით ეს მეთოდი, რომელიც არ გამოტოვოთ 60 00:04:04,450 --> 00:04:09,860 სიმბოლოები, ფართები, და ნომრები, მაშინ ჩვენ შეიძლება უბრალოდ გამოიყენოთ ცვლადი i, რაც 61 00:04:09,860 --> 00:04:12,540 ინდექსი შევიდა ჩვენი მთავარი ფრაზა ერთად. 62 00:04:12,540 --> 00:04:17,620 ჩვენ უნდა გამოვიყენოთ num_letters_seen შენარჩუნება სიმღერა ფაქტობრივი ადგილი 63 00:04:17,620 --> 00:04:21,146 საკვანძო ფრაზა, რომ ჩვენ გვინდა ინდექსი. 64 00:04:21,146 --> 00:04:32,240 ასე რომ აქ, თუ სიტყვით, ჩვენ გვაქვს, თუ num_letter_seen mod keyword_length, ასე რომ, 65 00:04:32,240 --> 00:04:34,570 რატომ უნდა mod სიტყვით სიგრძე? 66 00:04:34,570 --> 00:04:36,630 >> ასევე, hello world იყო კარგი მაგალითი. 67 00:04:36,630 --> 00:04:42,310 იმ შემთხვევაში, თუ სიტყვით იყო abc, მაშინ ჩვენ გვჭირდება მუდმივად დაშიფვრა მიერ მაშინ b 68 00:04:42,310 --> 00:04:45,740 მაშინ c, მაშინ გადაიტანოთ უკან გარშემო, a, b, c, a, b, c. 69 00:04:45,740 --> 00:04:50,110 ამიტომ, ჩვენ უნდა mod სიტყვით ხანგრძლივობა იმისათვის, რომ გადაიტანოთ უკან გარშემო. 70 00:04:50,110 --> 00:04:57,280 >> ასე რომ, თუ ეს არის ზედა წერილი, მაშინ ჩვენ გვინდა დაშიფვრა მიერ 71 00:04:57,280 --> 00:05:01,450 პოზიცია, რომ წერილი ანბანი, რომელიც ჩვენ მხოლოდ 72 00:05:01,450 --> 00:05:06,730 გამოკლება out კაპიტალური ა და ანალოგიურად, რადგან ამას წერილები, ჩვენ 73 00:05:06,730 --> 00:05:13,000 შეგიძლიათ მიიღოთ გასაღები, რომ ჩვენ გვინდა მიერ გამოკლება out ამას. 74 00:05:13,000 --> 00:05:16,910 ასე რომ, მიუხედავად იმისა, რომ წერილი გასაღები ფრაზა იყო დედაქალაქში, ან 75 00:05:16,910 --> 00:05:21,640 ამას წერილში, ჩვენ ვაპირებთ დაშიფვრა და იგივე თანხა. 76 00:05:21,640 --> 00:05:28,680 >> არის, რომ ჩვენ გვაქვს ჩვენი გასაღები, ჩვენ ვხედავთ, აქ, იმ შემთხვევაში, თუ გაგზავნა i არის ზედა 77 00:05:28,680 --> 00:05:32,660 ხასიათი, მაშინ ჩვენ გვინდა გამოვთვალოთ პოზიცია ანბანი რომ 78 00:05:32,660 --> 00:05:39,460 ხასიათი, დაამატოთ ჩვენი მთავარი ის, გადაიტანოთ უკან გარშემო ისე, რომ თუ წავედით წარსულში 79 00:05:39,460 --> 00:05:43,170 z ჩვენ დავუბრუნდებით a, b, c, და ასე შემდეგ. 80 00:05:43,170 --> 00:05:49,070 მაშინ, საბოლოოდ, დაამატოთ უკან კაპიტალის A. So ჩვენ გადაეტანა ისევ [? ASCII?] 81 00:05:49,070 --> 00:05:52,010 სპექტრი ამ სიმბოლოების ნაცვლად რიცხვითი პოზიცია ანბანი 82 00:05:52,010 --> 00:05:53,540 ამ სიმბოლოს. 83 00:05:53,540 --> 00:05:56,610 >> და ჩვენ გავაკეთებთ იგივე ქვედა სიმბოლო. 84 00:05:56,610 --> 00:06:00,070 გარდა ჩვენ გვინდა გამოვაკლოთ out ამას და დაამატოთ ეს უკან იმ 85 00:06:00,070 --> 00:06:02,900 ბოლოს, მხედრულ. 86 00:06:02,900 --> 00:06:08,120 გაითვალისწინეთ, რომ num_letter_seen მხოლოდ incremented თუ გაგზავნა ვიყავი 87 00:06:08,120 --> 00:06:09,640 ანბანური. 88 00:06:09,640 --> 00:06:15,790 ეს არის, თუ როგორ გამოტოვოთ ფართები, სიმბოლოები და ნომრები ჩვენი გასაღები ფრაზა, რადგან 89 00:06:15,790 --> 00:06:20,520 num_letter_seen არის ის, რაც ჩვენ გამოყენებით ინდექსი ჩვენი სიტყვით. 90 00:06:20,520 --> 00:06:24,540 >> და ბოლოს, ბოლოს და ბოლოს, ახლა, რომ გაგზავნა i გაიშიფრა, ჩვენ 91 00:06:24,540 --> 00:06:26,280 ამობეჭდოთ გაგზავნა i. 92 00:06:26,280 --> 00:06:27,890 და რომ არის ის. 93 00:06:27,890 --> 00:06:28,670 ჩემი სახელი არის რობ. 94 00:06:28,670 --> 00:06:31,020 და ეს არის Vigenere. 95 00:06:31,020 --> 00:06:32,850 >> [მუსიკის დაკვრა] 96 00:06:32,850 --> 00:06:36,651