1 00:00:00,000 --> 00:00:00,930 2 00:00:00,930 --> 00:00:04,030 >> ZAMYLA چان: چلو قدم چلتے ہیں ہماری Vigenere صفر کے ساتھ کھیل. 3 00:00:04,030 --> 00:00:06,710 Vigenere صفر ہے کیسر کی طرح ہے، 4 00:00:06,710 --> 00:00:11,060 کیسر میں سوائے ہم میں منظور ہمارے اہم کے طور پر ایک عدد صحیح. 5 00:00:11,060 --> 00:00:14,100 Vigenere کے میں ہم جا رہے ہیں ایک مطلوبہ الفاظ میں منتقل کرنے کی. 6 00:00:14,100 --> 00:00:19,400 لہذا، منتقل کرنے کے لئے میں چاہتا تھا تو اس CS 50 ہے کو ohai طرف ciphertext کے، 7 00:00:19,400 --> 00:00:23,260 پھر اس میں ہر خط کا مطلب ہے کہ کو ohai کلید کے طور پر خدمت کرنے کے لئے کی جا رہی ہے، 8 00:00:23,260 --> 00:00:27,160 اور میں سے زیادہ سائیکل پر جا رہا ہوں میرے شفٹ کے لئے اس مطلوبہ الفاظ 9 00:00:27,160 --> 00:00:31,930 ciphertext کے بنانے مشکل سے ایک بہت کچھ وضاحت کرنا. 10 00:00:31,930 --> 00:00:34,540 >> یہ کرنے کے لئے کیا مطلب ہے مطلوبہ الفاظ کی طرف منتقل؟ 11 00:00:34,540 --> 00:00:38,610 ویسے، مطلوبہ الفاظ کی ایک تار ہے جہاں ہر خط کے مساوی ہے 12 00:00:38,610 --> 00:00:41,080 کچھ عددی تبدیلی کو. 13 00:00:41,080 --> 00:00:49,310 پس اے 14 کا ایک اہم کے مساوی ہے، 7 کے ایک اہم ک، ایک، 0 کی کلید ہے 14 00:00:49,310 --> 00:00:54,670 تا کہ، کچھ بھی تبدیل نہیں کریں گے اور پھر میں 8 کا ایک اہم ہے. 15 00:00:54,670 --> 00:01:00,000 >> جس کے ساتھ میں Vigenere کے ایک بھاگ گیا فرما دیجئے سادہ متن یہ اچھی طرح CS50 ہے، 16 00:01:00,000 --> 00:01:02,800 کہ صرف دے گی مجھے ایک میں کوئی تبدیلی نہیں سٹرنگ. 17 00:01:02,800 --> 00:01:08,170 اس کے برابر ہے کہ نوٹس صفر کے ایک بٹن کے ساتھ کیسر چلانے. 18 00:01:08,170 --> 00:01:12,070 سچ تو یہ ہے، چل رہا Vigenere کے کسی ایک کردار کے ساتھ 19 00:01:12,070 --> 00:01:17,070 چلانے کے برابر ہو جائے گا کہ ایک ہی عددی کے ساتھ کیسر. 20 00:01:17,070 --> 00:01:20,400 >> ٹھیک ہے، تو، کے بعد سے وہ میں تھا تو اسی طرح ہیں 21 00:01:20,400 --> 00:01:24,300 اصل میں مشورہ ہے کہ آپ تو آپ کو صرف آپ سیزر کاپی کر سکتے ہیں چاہتے ہیں 22 00:01:24,300 --> 00:01:26,932 آپ کے Vigenere کے کوڈ میں کوڈ. 23 00:01:26,932 --> 00:01:28,640 چیزیں، بدل جائے گی لیکن کم از کم آپ کے پاس 24 00:01:28,640 --> 00:01:31,110 کچھ ریڑھ کی ہڈی کو آپ کے ساتھ کام کر سکتے ہیں. 25 00:01:31,110 --> 00:01:36,410 انسائکلوپیڈیا وہی ہم چاہتے ہیں کیونکہ چابی حاصل کرنے کے لئے، سادہ متن حاصل، 26 00:01:36,410 --> 00:01:40,690 encipher کہ سادہ متن، اور پھر اس کو پرنٹ. 27 00:01:40,690 --> 00:01:44,980 >> صرف کیسر جیسے اہم کی جا رہی ہے دوسری کمانڈ لائن کے طور پر میں منظور کیا جائے 28 00:01:44,980 --> 00:01:50,540 دلیل ہے argv انڈیکس میں موجود 1، لیکن یہ اس وقت مختلف ہے 29 00:01:50,540 --> 00:01:52,560 کیونکہ یہ حروف ہونا ضروری ہے. 30 00:01:52,560 --> 00:01:56,390 لہذا، ہم ہر پر iterate کرنے کی ضرورت ہے کہ اہم میں ایک کردار 31 00:01:56,390 --> 00:02:00,800 استعمال کرنے والا گزر چکا، اور یقینی بنائیں کہ ہر کردار اکشراتمک ہے 32 00:02:00,800 --> 00:02:02,800 جاری رکھنے کے لئے. 33 00:02:02,800 --> 00:02:05,560 >> ہم پھر، کہ کیا ہے ایک بار جب ہم صارف کی طرف سے تار حاصل کر سکتے ہیں، 34 00:02:05,560 --> 00:02:07,560 صرف ہم سے پہلے کے طور پر کیا. 35 00:02:07,560 --> 00:02:10,520 اور اب، ہم دل کے لئے آیا Vigenere کے لئے مسئلہ کی، 36 00:02:10,520 --> 00:02:14,665 جس میں صرف کیسر، کس طرح کرنے کے لئے کی طرح ہے enciphering پیٹرن پتہ لگا 37 00:02:14,665 --> 00:02:19,760 اور مساوات، اور encipher پورے سادہ متن. 38 00:02:19,760 --> 00:02:23,280 >> لہذا، اگر آپ محسوس کریں گے کہ Vigenere کے شفٹ کے لئے مساوات 39 00:02:23,280 --> 00:02:25,610 کیسر ایک بہت ملتا جلتا ہے. 40 00:02:25,610 --> 00:02:29,780 فرق صرف یہ ہے کہ اس کی بجائے ایک ہی متغیر کشمیر کے 41 00:02:29,780 --> 00:02:37,270 اس سے پہلے، اب K نے ایک نوشت ہے، کلید کے JTH خط کا اشارہ. 42 00:02:37,270 --> 00:02:39,560 >> کی ایک مثال کے ذریعے چلنے دو. 43 00:02:39,560 --> 00:02:43,830 آپ کو ایک راز منتقل کرنا چاہتے تھے کہہ دو آپ کے چاہنے والوں پر پیغام، میں تمہیں پسند. 44 00:02:43,830 --> 00:02:46,325 ویسے، آپ کی چابی کے لئے آپ کسی چیز کو منتخب تمہارا 45 00:02:46,325 --> 00:02:49,790 جانتے چاہنے والوں کو اپنی پسند کی، پنڈوں جانتا. 46 00:02:49,790 --> 00:02:52,290 ٹھیک ہے، تو ہم اس کو کس طرح منتقل کروں؟ 47 00:02:52,290 --> 00:02:55,500 >> ویسے، ہم اپنے سادہ متن انڈیکس ہے. 48 00:02:55,500 --> 00:02:59,160 یہ پہلا خط میں ہے اور تاکہ ہمارے چابی کے لئے انڈیکس ہے 49 00:02:59,160 --> 00:03:02,830 جس P میں، سب سے پہلے ہے ہمارے پانڈا لفظ میں خط. 50 00:03:02,830 --> 00:03:08,590 لہذا، P کی طرف سے مجھے منتقل ہماری X دیتا ہے، پھر ہم سادہ متن انڈیکس کو آگے بڑھانے کے. 51 00:03:08,590 --> 00:03:10,460 یہ ایک کی جگہ پر ہمیں ملتا ہے. 52 00:03:10,460 --> 00:03:13,540 اب، خلا کردار غیر اکشراتمک، ہے 53 00:03:13,540 --> 00:03:16,930 تو اس کا مطلب ہے کہ، کہ صرف حق ciphertext کے لئے ختم کی منتقلی، 54 00:03:16,930 --> 00:03:23,430 ہم وہاں ایک جگہ ڈال دیا، اور ہم ایسا نہیں کرتے ہمارے کلیدی لئے انڈیکس کو آگے بڑھانے کے. 55 00:03:23,430 --> 00:03:25,820 لہذا، ہم اس مقام پر پی میں اب بھی ہیں. 56 00:03:25,820 --> 00:03:30,130 >> ہم اگلے پر آگے بڑھانے کے ہمارے سادہ متن میں انڈیکس. 57 00:03:30,130 --> 00:03:34,030 اور اب، کہ ہے کیونکہ ایک خط، خفی ایل، 58 00:03:34,030 --> 00:03:37,920 ہم کی طرف سے اس پر منتقل ہمارے کلیدی میں اگلے انڈیکس. 59 00:03:37,920 --> 00:03:42,360 جو ایک صفر ہے، ایک ہے، شفٹ تاکہ صرف ہو جاتا ہے 60 00:03:42,360 --> 00:03:44,370 ہمارے ciphertext میں ایک ایل. 61 00:03:44,370 --> 00:03:51,120 اس کے بعد، ہم دونوں سادہ متن کو آگے بڑھانے، اور کلید انڈیکس اکشراتمک ہے کیونکہ. 62 00:03:51,120 --> 00:03:56,210 تو پھر ہم اس کو جاری رکھیں ہم جیسے میں e حاصل کرنے تک. 63 00:03:56,210 --> 00:04:01,090 >> ٹھیک ہے، اگر آپ اس پر توجہ دیں گے تاکہ اس نقطہ، ہمارے کلیدی انڈیکس کی شرائط میں، 64 00:04:01,090 --> 00:04:03,940 ہم کے اختتام تک پہنچ گئے ہیں پانڈا لفظ، تو کیا ہوا 65 00:04:03,940 --> 00:04:08,750 ہم اگلے پر حاصل ہوتا ہے جب سادہ متن میں اکشراتمک خط؟ 66 00:04:08,750 --> 00:04:12,180 ویسے، ایسا ہوتا ہے کہ ہم سب ہے شروع کرنے کے لئے کے ارد گرد لپیٹ، 67 00:04:12,180 --> 00:04:14,710 ہمارے کلیدی کی پہلی انڈیکس پر. 68 00:04:14,710 --> 00:04:19,570 لہذا، پھر ہم اس کو منتقل P کی طرف Y ہمارے ن دینے کے لئے. 69 00:04:19,570 --> 00:04:26,860 اور پھر، ہم انکوڈنگ ختم جاری رہے ہمارے سادہ متن X lvne noh حاصل کرنے کے لئے. 70 00:04:26,860 --> 00:04:29,300 >> اس مثال سے، میں ہم صرف پہلے ظاہر ہوا ہے کہ 71 00:04:29,300 --> 00:04:33,140 مطلوبہ الفاظ میں اگلے خط اگر سادہ متن میں کردار 72 00:04:33,140 --> 00:04:37,480 isalpha تو ایک حرف ہے تقریب یہاں ہاتھ میں آئے گی. 73 00:04:37,480 --> 00:04:43,030 اور، صرف کیسر میں کے طور پر، ہم کرنا چاہتے ہیں کیس، isupper اور islower کے تحفظ. 74 00:04:43,030 --> 00:04:46,100 تو، یہ تھوڑا سا شامل آپ کے pseudocode میں میں. 75 00:04:46,100 --> 00:04:48,510 >> تو ہم کس طرح چابی شفٹوں پتہ لگا سکتا ہوں؟ 76 00:04:48,510 --> 00:04:53,030 ٹھیک ہے، آپ ہماری بحث یاد ہے کیسر میں حروف تہجی کی سوچکانکوں پر 77 00:04:53,030 --> 00:04:55,370 مسئلہ، یہ بہت ملتا جلتا ہے. 78 00:04:55,370 --> 00:05:01,130 >> جہاں ایک ایک ASCII کے مساوی ہے 65 کی قدر بلکہ 0 کی ایک شفٹ، 79 00:05:01,130 --> 00:05:03,550 اور پھر آخری خط حروف تہجی میں، Z، 80 00:05:03,550 --> 00:05:06,940 25 کی ایک شفٹ سے میل. 81 00:05:06,940 --> 00:05:10,320 آپ کو منتقل کہ محسوس کریں گے ایک جیسی ہے یا نہیں 82 00:05:10,320 --> 00:05:14,880 خط اوپری کیس یا کم کیس ہے. 83 00:05:14,880 --> 00:05:17,700 >> ٹھیک ہے، تو اب آپ کو اس معلوم کرنا ہے کہ کس طرح جانتے ہیں 84 00:05:17,700 --> 00:05:21,470 عددی منتقل کہ کسی ایک کردار کے مساوی ہے 85 00:05:21,470 --> 00:05:24,050 چلو ہمارے مساوات واپس جانے. 86 00:05:24,050 --> 00:05:28,180 ہم نے دو مختلف ہے کیونکہ یہاں subscripts، I اور J، 87 00:05:28,180 --> 00:05:32,130 کہ ہم ٹریک رکھنے کے لئے چاہتے ہیں کہ ایک اشارہ ہے سادہ متن میں ہمارے دونوں پوزیشن کی 88 00:05:32,130 --> 00:05:36,600 اس کے ساتھ ساتھ مطلوبہ لفظ میں اپنی پوزیشن کے طور پر، لہذا ان کو دو الگ الگ متغیر ہیں 89 00:05:36,600 --> 00:05:39,010 ہم میں سے ایک ہولڈ رکھنے کے لئے چاہتے ہیں کہ. 90 00:05:39,010 --> 00:05:42,580 >> اب، ہماری سادہ متن میں پوزیشن ہر وقت بڑھانے کے لئے کی جا رہی ہے، 91 00:05:42,580 --> 00:05:45,530 چنانچہ یہ ایک ہونے جا رہا ہے سا زیادہ براہ راست آگے 92 00:05:45,530 --> 00:05:49,750 پوزیشن مطلوبہ الفاظ کی مخالفت کے طور پر، ہم جانتے ہیں کہ جس کے ارد گرد لپیٹ کرنے کے لئے ہے، 93 00:05:49,750 --> 00:05:52,910 اور کبھی کبھی اضافہ، کبھی کبھی ایک ہی رہیں. 94 00:05:52,910 --> 00:05:55,430 لہذا، ہم کس طرح عمل درآمد کرتے فعالیت 95 00:05:55,430 --> 00:05:59,820 کے ارد گرد لپیٹ مطلوبہ الفاظ کے لئے انڈیکس؟ 96 00:05:59,820 --> 00:06:01,640 >> میں نے شمار مثال استعمال کرنے کے لئے جا رہا ہوں. 97 00:06:01,640 --> 00:06:06,100 دور کی گنتی ایک مقبول طریقہ ہے گروپوں میں لوگوں کو تقسیم کرنے کی. 98 00:06:06,100 --> 00:06:10,660 کہہ دو کہ میں نے 5 افراد تھے اور میں چاہتا تھا تین گروپوں میں ان کو ٹکڑے ٹکڑے کر، 99 00:06:10,660 --> 00:06:13,640 تو پھر میں نے گنتی کی طرف سے شروع ہو جائے گا. 100 00:06:13,640 --> 00:06:16,980 پہلا شخص کرے گا ، میں ٹیم نمبر ایک ہوں کا کہنا 101 00:06:16,980 --> 00:06:21,030 اگلے شخص کی ٹیم تعداد ہو گی دو، تیسرے شخص کی ٹیم تعداد میں 102 00:06:21,030 --> 00:06:21,910 تین. 103 00:06:21,910 --> 00:06:25,910 اب، میں صرف تین گروہوں اتنا چاہتے ہیں چوتھا شخص اصل گے 104 00:06:25,910 --> 00:06:30,160 آغاز میں شروع کرتے ہیں اور کہتے ہیں کہ، ٹھیک ہے، میں اس کے ساتھ ساتھ ٹیم تعداد میں سے ایک ہوں، 105 00:06:30,160 --> 00:06:32,890 اور اگلے شخص ٹیم دو نمبر ہو گا. 106 00:06:32,890 --> 00:06:37,660 اور، وہاں سے، انہوں نے اس وقت کر سکتے ہیں ان گروپوں میں الگ. 107 00:06:37,660 --> 00:06:41,130 >> لہذا، میں modulo ہے کہ کس طرح استعمال کر سکتے ہیں مجھ پر عمل درآمد میں مدد کے لئے 108 00:06:41,130 --> 00:06:44,160 اس تقریب کے ارد گرد لپیٹ آف گننے؟ 109 00:06:44,160 --> 00:06:50,140 ویسے، سب سے پہلے شخص نمبر 1، جدید 3 1 فراہم کرتا ہے. 110 00:06:50,140 --> 00:06:54,690 2 MOD کے 3، ہم سے 2 دیتا ہے اور 3 MOD 3 ہم 0 دیتا ہے. 111 00:06:54,690 --> 00:07:02,140 >> چوتھے شخص، نمبر 4، جدید 3 1 فراہم کرتا ہے، اور اس کے بعد 5 MOD کے 3 ہم سے 2 فراہم کرتا ہے. 112 00:07:02,140 --> 00:07:05,370 تو، تم، اگرچہ کہ محسوس کریں گے میں ہے کہ لوگوں کی تعداد 113 00:07:05,370 --> 00:07:11,210 بڑھاتا ہے، اور اس سے اوپر ہے 3، کے بعد سے میں 3 کی طرف موڈنگ ہوں 114 00:07:11,210 --> 00:07:15,250 میں نے ہمیشہ نمبرز 0، 1، اور 2 ملتا. 115 00:07:15,250 --> 00:07:19,040 میں نے 3 سے بڑے کبھی نہیں ملے. 116 00:07:19,040 --> 00:07:22,630 پس میں نے 10 تھا یہاں تک کہ اگر لوگ، پھر ان لوگوں کے تمام 117 00:07:22,630 --> 00:07:27,430 اب بھی گروپ 1، 2، یا 0 کے اندر اندر ہو جائے گا. 118 00:07:27,430 --> 00:07:33,560 >> تو، اب ہم جانتے ہیں کہ ہم ایک گروپ ہے تو 5 میں سے ہیں اور ہم 3 کی طرف سے ان میں سے سب MOD، 119 00:07:33,560 --> 00:07:38,180 پھر ہم کبھی نہیں کرنے جا رہے ہیں گروپ 0، 1، یا 2 سے تجاوز. 120 00:07:38,180 --> 00:07:43,430 لہذا، ہم نے کبھی نہیں ایک گروہ کو حاصل کرنے کے لئے جا رہے ہیں اوپر 3 یا اس کے برابر ہے یہ تعداد. 121 00:07:43,430 --> 00:07:46,980 لہذا، میں نے پانچ مزید شامل چاہے لوگ، اس کے بعد ان میں سے سب 122 00:07:46,980 --> 00:07:53,150 اب بھی گروپوں کو تفویض کیا جائے گا 0، 1، یا 2 میں 3 کی طرف موڈنگ رہا ہوں کیونکہ. 123 00:07:53,150 --> 00:07:56,510 میں نے کبھی نہیں کہ کیپس کی حد سے تجاوز کرنے جا رہا ہوں. 124 00:07:56,510 --> 00:08:00,800 >> ٹھیک ہے، تو ہم درخواست دے سکتے ہیں تو دیکھتے ہیں modulo ہے کا استعمال کرتے ہوئے کے اس تصور 125 00:08:00,800 --> 00:08:03,710 کے ارد گرد لپیٹ گروپ کی تعداد اور لاگو 126 00:08:03,710 --> 00:08:08,000 ہم چاہتے ہیں جہاں یہ Vigenere کے لئے کس کے ارد گرد لپیٹ کرنے modulo استعمال کرنے 127 00:08:08,000 --> 00:08:10,220 مطلوبہ الفاظ کے لئے انڈیکس. 128 00:08:10,220 --> 00:08:12,830 یہاں تک کہ ہم incrementing رہے ہیں اگرچہ انڈیکس ہمیشہ ہم 129 00:08:12,830 --> 00:08:17,260 ہمیشہ ہم اس بات کو یقینی بنانا چاہتے ہیں بہت شروع کرنے کے ارد گرد لپیٹ 130 00:08:17,260 --> 00:08:20,050 کبھی نہیں سے تجاوز سٹرنگ کی لمبائی. 131 00:08:20,050 --> 00:08:23,510 >> ٹھیک ہے، تو میں یہ ہو سکتا ہے جانتے ہیں ایک تھوڑا سا بھاری اکثریت سے. 132 00:08:23,510 --> 00:08:26,670 ایسا کرنے کے لئے ایک بہت زیادہ اس P سیٹ میں بھی نہیں ہے. 133 00:08:26,670 --> 00:08:30,050 لہذا، یقین ہے کہ آپ کو لکھنے کہ بنانے اپنے آپ کے لئے ایک اچھا pseudocode کے 134 00:08:30,050 --> 00:08:32,870 آپ سمجھتے ہیں کہ اور کہ کام کیا جاتا ہے. 135 00:08:32,870 --> 00:08:35,580 کوشش کریں اور ہر پتہ ایک لائن آزادانہ طور پر 136 00:08:35,580 --> 00:08:38,370 تمام چھوٹی باہر figuring پہیلی کے چھوٹے چھوٹے ٹکڑوں 137 00:08:38,370 --> 00:08:40,260 یہ ایک ساتھ مل کر ڈال کرنے سے پہلے. 138 00:08:40,260 --> 00:08:43,110 >> آپ حاصل کر سکتے ہیں کہ بات کو یقینی بنائیں کمانڈ لائن سے چابی 139 00:08:43,110 --> 00:08:46,780 اور یقینی بنائیں کہ اکشراتمک ہے کہ، صارف کی طرف سے سادہ متن حاصل، 140 00:08:46,780 --> 00:08:51,010 اور پھر enciphering میں، یقین ہے کہ آپ کو بنانے کے ایک واحد خط encipher کرنا کس طرح جانتے ہیں، 141 00:08:51,010 --> 00:08:56,130 اور پھر پوری سٹرنگ پر ترقی افعال کے ارد گرد لپیٹ سب کے ساتھ. 142 00:08:56,130 --> 00:08:59,610 آخر میں، آپ ciphertext پرنٹ کر سکتے ہیں. 143 00:08:59,610 --> 00:09:04,050 >> میرا نام، ایک Zamyla ہے اور اس پر Vigenere تھا. 144 00:09:04,050 --> 00:09:07,757