در این مطلب، ویدئو رمزنگاری منحنی بیضوی – قسمت 1 – کلاس پایتون برای منحنی های بیضوی در زمینه های محدود با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:15:15
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,030 –> 00:00:01,829
در این ویدیو ما قصد داریم یک
2
00:00:01,829 –> 00:00:04,200
مدل هزینه پایتون ساده و
3
00:00:04,200 –> 00:00:07,600
منحنی بیضوی را روی یک میدان محدود از عناصر P
4
00:00:07,600 –> 00:00:23,470
[موسیقی] کدنویسی کنیم،
5
00:00:24,019 –> 00:00:26,490
اول از همه ذکر میکنم که
6
00:00:26,490 –> 00:00:27,990
برای مرجعی برای این ویدیو
7
00:00:27,990 –> 00:00:31,529
میتوانید یک PDF توسط Stein را جستجو کنید. فقط
8
00:00:31,529 –> 00:00:33,899
منحنی های بیضوی Stein را جستجو کنید و باید
9
00:00:33,899 –> 00:00:37,380
آن را پیدا کنید، من URL را دقیقاً در اینجا نشان خواهم داد
10
00:00:37,380 –> 00:00:39,899
تا همه چیز خاموش شود، اجازه دهید فقط
11
00:00:39,899 –> 00:00:43,140
فیلد Kay را اصلاح کنیم و دو عنصر را در K ثابت کنیم
12
00:00:43,140 –> 00:00:45,270
و اجازه دهید
13
00:00:45,270 –> 00:00:47,460
رابطه چند جمله ای زیر را در دو متغیر x
14
00:00:47,460 –> 00:00:51,329
و y در نظر بگیریم. مجذور y برابر x مکعب
15
00:00:51,329 –> 00:00:53,969
به اضافه تبر به اضافه B است، بنابراین اساساً y
16
00:00:53,969 –> 00:00:56,520
مربع برابر یک مکعب است که در آن مکعب
17
00:00:56,520 –> 00:00:59,129
عبارت x مجذور را از دست داده است، ما
18
00:00:59,129 –> 00:01:01,350
به
19
00:01:01,350 –> 00:01:04,650
شرایط فنی نیاز داریم که منفی 16 برابر برای یک
20
00:01:04,650 –> 00:01:08,270
مکعب به اضافه 27 B مربع B برابر نیست. به 0
21
00:01:08,270 –> 00:01:11,010
این کمیت تفکیک کننده نامیده
22
00:01:11,010 –> 00:01:14,850
می شود و ما نیاز داریم که آن
23
00:01:14,850 –> 00:01:17,610
ممیز غیر صفر باشد، به عبارت دیگر می خواهیم
24
00:01:17,610 –> 00:01:19,470
e از K را مجموعه ای از تمام
25
00:01:19,470 –> 00:01:23,460
جفت های مرتب شده X Y یا x و y RN K تعریف
26
00:01:23,460 –> 00:01:27,540
کنیم که معادله چند جمله ای را نیز برآورده می کند.
27
00:01:27,540 –> 00:01:30,570
EF K دارد یک نقطه اضافی که
28
00:01:30,570 –> 00:01:32,909
نقطه ای است که ما به عنوان یک
29
00:01:32,909 –> 00:01:38,430
نقطه در بی نهایت به آن اشاره می کنیم، اکنون هدف اصلی ما در
30
00:01:38,430 –> 00:01:40,380
اینجا تعریف یک عملیات باینری در e از
31
00:01:40,380 –> 00:01:43,200
K است و ما آن را در پایتون
32
00:01:43,200 –> 00:01:48,509
بعدا و باینری را کد می کنیم. عمل a از
33
00:01:48,509 –> 00:01:51,329
K در واقع ساختار a از K را
34
00:01:51,329 –> 00:01:54,390
در گروه abelian می دهد، بنابراین یک
35
00:01:54,390 –> 00:01:56,939
جابجایی خواهد بود
36
00:01:56,939 –> 00:02:00,090
، یک عنصر هویتی
37
00:02:00,090 –> 00:02:04,530
خواهد بود و معکوس وجود خواهد داشت، دلیل اینکه در واقع
38
00:02:04,530 –> 00:02:06,960
متمایز باید غیر صفر باشد. برای
39
00:02:06,960 –> 00:02:09,869
اینکه تداعی عملیات برای این ویدیو
40
00:02:09,869 –> 00:02:11,680
درست باشد،
41
00:02:11,680 –> 00:02:14,349
42
00:02:14,349 –> 00:02:18,310
میدان K خود را محدود می کنیم تا یک میدان محدود با عناصر P باشد
43
00:02:18,310 –> 00:02:20,709
و علاوه بر این، P بزرگتر
44
00:02:20,709 –> 00:02:23,110
از سه باشد، به عبارت دیگر
45
00:02:23,110 –> 00:02:24,640
، مواردی را در نظر نخواهیم گرفت که P
46
00:02:24,640 –> 00:02:27,579
دو است یا P سه است بدون اینکه این موارد
47
00:02:27,579 –> 00:02:30,129
نیاز به درمان جداگانه ای دارند، بنابراین اجازه
48
00:02:30,129 –> 00:02:32,709
دهید مستقیماً به کد شیرجه بزنیم و
49
00:02:32,709 –> 00:02:35,290
یک پوشه ایجاد کنیم تا کد خود را در آن قرار دهیم،
50
00:02:35,290 –> 00:02:37,510
یک فایل پایتون خالی به نام
51
00:02:37,510 –> 00:02:40,989
منحنی بیضی پی ایجاد می کنیم و اجازه دهید آن را در
52
00:02:40,989 –> 00:02:44,319
متن عالی باز کنیم و کدی بنویس تا
53
00:02:44,319 –> 00:02:46,090
با آن تماس بگیریم منحنی بیضوی کلاس
54
00:02:46,090 –> 00:02:49,299
، سازنده ای را تعریف می کنیم که
55
00:02:49,299 –> 00:02:50,859
سازنده در دو
56
00:02:50,859 –> 00:02:53,230
پارامتر B و P که پارامترهای تعیین
57
00:02:53,230 –> 00:02:58,019
کننده منحنی هستند، می گیرد و
58
00:02:58,019 –> 00:03:02,079
همچنین یک فیلد به نام نقاط ایجاد می کنیم
59
00:03:02,079 –> 00:03:04,209
که لیست نقاطی است که روی آن قرار دارند.
60
00:03:04,209 –> 00:03:06,879
منحنی به عبارت دیگر نقطه بی نهایت
61
00:03:06,879 –> 00:03:11,109
و همچنین مجموعه ای از راه حل های XY برای
62
00:03:11,109 –> 00:03:13,989
آن مکعب خاص یا مربع Y
63
00:03:13,989 –> 00:03:15,730
برابر است با معادله مکعبی که قبلاً در مورد آن صحبت کردیم،
64
00:03:15,730 –> 00:03:18,879
بنابراین در حال حاضر ما فقط
65
00:03:18,879 –> 00:03:20,500
نقاط را یک لیست خالی می کنیم، اما
66
00:03:20,500 –> 00:03:23,949
بعداً آن را پر می کنیم. به چند توابع کمکی نیاز داریم،
67
00:03:23,949 –> 00:03:26,310
پس بیایید همین
68
00:03:26,310 –> 00:03:28,659
الان چند مورد از آنها را بنویسیم، یکی این است
69
00:03:28,659 –> 00:03:30,459
که باید بتوانیم
70
00:03:30,459 –> 00:03:33,099
یک مود P عدد صحیح را کاهش دهیم، بنابراین بیایید یک
71
00:03:33,099 –> 00:03:35,530
تابع کوچک برای این کار بسازیم تا نداشته
72
00:03:35,530 –> 00:03:39,040
باشیم. برای نوشتن کدی که
73
00:03:39,040 –> 00:03:40,810
با عملگر مدول هر بار
74
00:03:40,810 –> 00:03:44,709
و یک تابع کمکی دیگر فقط
75
00:03:44,709 –> 00:03:47,790
میگوید که آیا دو عدد صحیح با mod P برابر هستند
76
00:03:47,790 –> 00:03:50,199
یا نه، که روش دیگری برای گفتن اینکه
77
00:03:50,199 –> 00:03:53,109
تفاوت آنها بر P قابل تقسیم است، بنابراین
78
00:03:53,109 –> 00:03:54,609
ما آن دو تابع کمکی را مینویسیم.
79
00:03:54,609 –> 00:03:59,470
و نه بیایید یک تابع ساده بنویسیم
80
00:03:59,470 –> 00:04:01,269
تا لیست تمام نقاطی را که
81
00:04:01,269 –> 00:04:03,940
روی یک منحنی بیضی قرار دارند
82
00:04:03,940 –> 00:04:08,620
تعیین کنیم، بیایید تابع تعریف نقاط را تعریف کنیم و ما
83
00:04:08,620 –> 00:04:11,769
به یک انتزاعی در نقطه در بی نهایت نیاز داریم،
84
00:04:11,769 –> 00:04:13,810
نمی دانم آیا این بهترین راه برای انجام این کار است یا خیر.
85
00:04:13,810 –> 00:04:15,370
بیایید فقط یک
86
00:04:15,370 –> 00:04:17,440
متغیر جهانی به نام نقطه بی نهایت تعریف کنیم
87
00:04:17,440 –> 00:04:22,520
و آن را برابر با ثابت پایتون هیچ قرار دهیم
88
00:04:22,520 –> 00:04:24,440
و این به عنوان نقطه بینهایت ما عمل می
89
00:04:24,440 –> 00:04:27,289
کند، بسیار خوب، احتمالاً بهترین راه برای
90
00:04:27,289 –> 00:04:28,610
انجام آن نیست، اما برای اهداف ساده ما به اندازه کافی خوب
91
00:04:28,610 –> 00:04:32,479
است، بنابراین در تعریف ما از
92
00:04:32,479 –> 00:04:35,509
نقاط تعریف شده یا کد ما برای نوشتن آن
93
00:04:35,509 –> 00:04:38,210
روال، اجازه دهید ابتدا
94
00:04:38,210 –> 00:04:40,099
نقطه بی نهایت خود را به لیست خود اضافه کنیم
95
00:04:40,099 –> 00:04:43,129
زیرا یکی از نقاط ما است، اما
96
00:04:43,129 –> 00:04:44,960
بقیه نقاط بعد از آن نقطه بینهایت
97
00:04:44,960 –> 00:04:46,729
قرار است جفت های X Y متعلق
98
00:04:46,729 –> 00:04:53,479
به F P متقاطع F P مرتب شوند و در واقع هر
99
00:04:53,479 –> 00:04:55,159
عنصر FP را می توان به عنوان یک عدد صحیح
100
00:04:55,159 –> 00:04:58,639
بین 0 و P منهای 1 در نظر گرفت، بنابراین ما فقط باید
101
00:04:58,639 –> 00:05:03,380
برای حلقه هایی بنویسیم که هر
102
00:05:03,380 –> 00:05:08,050
جفت ممکن را آزمایش می کند و فقط
103
00:05:08,050 –> 00:05:10,370
هر جفت راه حلی که به ما راه حل می دهد را ثبت می کنیم.
104
00:05:10,370 –> 00:05:12,349
r معادله را به درستی تعریف می کند
105
00:05:12,349 –> 00:05:17,150
و هر زمان که راه حلی پیدا می
106
00:05:17,150 –> 00:05:19,639
کنیم آن را به لیست خود اضافه می کنیم، بنابراین بیایید کد خود را آزمایش
107
00:05:19,639 –> 00:05:21,759
کنیم که چرا یک
108
00:05:21,759 –> 00:05:23,960
منحنی بیضوی ساده را در اینجا با
109
00:05:23,960 –> 00:05:26,930
پارامترهای a 2 مثال نمی زنیم، B برابر 7 است و
110
00:05:26,930 –> 00:05:31,159
عدد اول خود را به 19 باشد و
111
00:05:31,159 –> 00:05:32,630
بیایید یک تابع کوچک برای چاپ
112
00:05:32,630 –> 00:05:36,770
لیست نقاط ایجاد کنیم و سپس آنها را چاپ می
113
00:05:36,770 –> 00:05:39,020
کنیم و می بینیم که لیست
114
00:05:39,020 –> 00:05:40,520
نقاط را روی این منحنی خاص می
115
00:05:40,520 –> 00:05:42,919
بینیم، همچنین می توانیم یک تابع کوچک برای
116
00:05:42,919 –> 00:05:44,630
برگرداندن تعداد نقاط بنویسیم. روی منحنی به
117
00:05:44,630 –> 00:05:48,740
این شکل به نظر می رسد / این منحنی دارد به
118
00:05:48,740 –> 00:05:50,889
نظر می رسد این منحنی دارای 22 نقطه با
119
00:05:50,889 –> 00:05:54,800
احتساب نقطه بینهایت است و بیایید
120
00:05:54,800 –> 00:05:56,990
نگاهی به ممیز بیندازیم می توانیم
121
00:05:56,990 –> 00:05:58,310
تابعی بنویسیم تا برگردیم تا
122
00:05:58,310 –> 00:06:01,099
تفکیک کنیم و
123
00:06:01,099 –> 00:06:03,130
تفکیک کننده این منحنی را می بینیم. 18 است و
124
00:06:03,130 –> 00:06:05,810
آن غیر صفر است، بنابراین این در واقع یک
125
00:06:05,810 –> 00:06:08,330
منحنی بیضوی است، برای ادامه بیشتر،
126
00:06:08,330 –> 00:06:10,759
بیایید یک تابع کمکی دیگر اضافه کنیم که
127
00:06:10,759 –> 00:06:13,490
عبارت است از یافتن
128
00:06:13,490 –> 00:06:19,370
مود P معکوس ضربی یک عنصر غیر صفر از FP، ما
129
00:06:19,370 –> 00:06:21,979
فقط یک جستجوی brute force در حال اجرا انجام می دهیم.
130
00:06:21,979 –> 00:06:23,960
همه احتمالات وجود دارد و اگر آن را پیدا کنیم،
131
00:06:23,960 –> 00:06:26,360
آن را برمی گردانیم در غیر این صورت
132
00:06:26,360 –> 00:06:28,669
هیچکدام را برمی گردانیم، راه های بهتری برای انجام
133
00:06:28,669 –> 00:06:32,000
این کار وجود دارد، اما راه های کارآمدتری برای
134
00:06:32,000 –> 00:06:33,970
انجام این کار وجود دارد، اما برای ما این به اندازه کافی خوب است
135
00:06:33,970 –> 00:06:37,150
اگر معکوس انجام شود
136
00:06:37,150 –> 00:06:39,190
، به این معنی است که X یک عدد صحیح است که بر P بخش پذیر است،
137
00:06:39,190 –> 00:06:43,000
سپس ما فقط انجام شده را برمی گردانیم، بنابراین ما در
138
00:06:43,000 –> 00:06:44,680
نهایت آماده هستیم تا
139
00:06:44,680 –> 00:06:46,360
عملیات باینری را که قبلاً در مورد آن صحبت کردیم،
140
00:06:46,360 –> 00:06:48,070
در مجموعه نقاط این
141
00:06:48,070 –> 00:06:51,400
منحنی تعریف کنیم و در اینجا
142
00:06:51,400 –> 00:06:54,430
تعریف استین را دنبال می کنیم. توجه داشته باشید
143
00:06:54,430 –> 00:07:00,010
که اکنون کاملاً واضح نوشته شده است، ابتدا باید از
144
00:07:00,010 –> 00:07:01,900
خود بپرسیم که آیا این
145
00:07:01,900 –> 00:07:04,210
عملیات باینری حتی زمانی که من دو
146
00:07:04,210 –> 00:07:07,420
نقطه روی منحنی x1 y1 و x2 y2
147
00:07:07,420 –> 00:07:09,550
میگیرم بسته میشود و نسخهای را که
148
00:07:09,550 –> 00:07:11,560
در این قانون در اینجا دنبال میشود دنبال میکنم
149
00:07:11,560 –> 00:07:15,670
تا نقطه سوم را به دست بیاورم. از کجا می
150
00:07:15,670 –> 00:07:18,220
دانیم که نقطه R در واقع روی
151
00:07:18,220 –> 00:07:19,930
منحنی است، به عبارت دیگر، آیا
152
00:07:19,930 –> 00:07:23,380
مجذور Y برابر با x مکعب به علاوه
153
00:07:23,380 –> 00:07:26,590
تبر به علاوه رابطه B است یا خیر، بنابراین
154
00:07:26,590 –> 00:07:29,080
کاملاً واضح نیست، اما اگر به
155
00:07:29,080 –> 00:07:32,590
اثبات و ساختار نگاه کنید. شما می
156
00:07:32,590 –> 00:07:35,380
بینید که در واقع این کار
157
00:07:35,380 –> 00:07:39,340
واضح نیست اما خیلی سخت نیست، اما
158
00:07:39,340 –> 00:07:41,169
مهم است که این سوال را از خود بپرسید که باید به خودتان
159
00:07:41,169 –> 00