در این مطلب، ویدئو پیاده سازی Python MD5 با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:10:27
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,080 –> 00:00:02,000
سلام و خوش آمدید من جیمز مورفی هستم و
2
00:00:02,000 –> 00:00:03,679
امروز در مورد الگوریتم هش md5 صحبت می کنیم md5
3
00:00:03,679 –> 00:00:05,120
4
00:00:05,120 –> 00:00:08,559
خفف پیام خلاصه 5 است و ک
5
00:00:08,559 –> 00:00:10,639
ری که انجام می دهد این است که در یک پیام قرار می گیرد و خ
6
00:00:10,639 –> 00:00:12,719
اصه ای به نام خلاصه پیام را خروجی می ده
7
00:00:12,719 –> 00:00:15,759
8
00:00:15,759 –> 00:00:17,840
و پیام را با حتی تغییر می دهد. یک کاراکتر
9
00:00:17,840 –> 00:00:19,439
و خلاصه قرار است
10
00:00:19,439 –> 00:00:21,359
کاملاً متفاوت باشد
11
00:00:21,359 –> 00:00:23,519
. پیام می تواند هر طولی داشته باشد اما
12
00:00:23,519 –> 00:00:24,800
خلاصه همیشه
13
00:00:24,800 –> 00:00:27,840
دقیقاً 128 بیت خواهد بود که ما به عنوان
14
00:00:27,840 –> 00:00:31,840
چهار عدد صحیح 32 بیتی فکر می کنیم
15
00:00:32,000 –> 00:00:34,399
md5 چیزی است که به آن تابع هش
16
00:00:34,399 –> 00:00:35,840
می گویند که در واقع فقط به این معنی است که
17
00:00:35,840 –> 00:00:38,559
پیام ها را می گیرد. با هر طولی تا یک طول ثابت،
18
00:00:38,559 –> 00:00:41,440
اما md5 قرار نبود فقط یک
19
00:00:41,440 –> 00:00:42,480
تابع هش باشد،
20
00:00:42,480 –> 00:00:44,640
بلکه در نظر گرفته شده بود که یک تابع هش ایمن
21
00:00:44,640 –> 00:00:45,680
22
00:00:45,680 –> 00:00:47,520
در میان چیزهای دیگر باشد که قرار
23
00:00:47,520 –> 00:00:48,879
نیست بتوانید
24
00:00:48,879 –> 00:00:51,199
ورودی هایی با یک هش داده شده یا حتی دو
25
00:00:51,199 –> 00:00:53,360
ورودی پیدا کنید. با همان هش
26
00:00:53,360 –> 00:00:56,239
متأسفانه md5 یک تابع هش ایمن
27
00:00:56,239 –> 00:00:56,719
28
00:00:56,719 –> 00:00:58,800
نیست، برای استفاده رمزنگاری کاملاً خراب است،
29
00:00:58,800 –> 00:00:59,760
30
00:00:59,760 –> 00:01:01,199
اما همچنان از منظر تاریخی مهم است،
31
00:01:01,199 –> 00:01:03,199
بنابراین بیایید
32
00:01:03,199 –> 00:01:04,000
نگاهی به آن بیندازیم
33
00:01:04,000 –> 00:01:06,400
و اجرای آن را ببینیم
34
00:01:06,400 –> 00:01:08,400
چند حمله در دنیای واقعی علیه
35
00:01:08,400 –> 00:01:09,200
آن را مورد بحث قرار دهید،
36
00:01:09,200 –> 00:01:11,360
اما قبل از ما می دانید
37
00:01:11,360 –> 00:01:12,960
چه کسی از یک تابع هش شکسته مانند
38
00:01:12,960 –> 00:01:13,840
md5
39
00:01:13,840 –> 00:01:16,080
40
00:01:16,080 –> 00:01:18,400
41
00:01:18,400 –> 00:01:22,000
42
00:01:22,000 –> 00:01:24,960
43
00:01:24,960 –> 00:01:25,360
44
00:01:25,360 –> 00:01:28,560
استفاده نمی کند. 30 روز ضمانت بازگشت وجه از
45
00:01:28,560 –> 00:01:30,479
کد کوپن m با تمام حروف
46
00:01:30,479 –> 00:01:33,600
در هنگام پرداخت استفاده کنید تا 91 تخفیف در تمام
47
00:01:33,600 –> 00:01:35,439
برنامه های سالانه دریافت
48
00:01:35,439 –> 00:01:37,360
کنید، پس بیایید فقط به کدی بپردازیم
49
00:01:37,360 –> 00:01:39,439
آنچه در اینجا دارم پیاده سازی
50
00:01:39,439 –> 00:01:41,119
الگوریتم md5
51
00:01:41,119 –> 00:01:42,560
اولین چیزی است که ما باید
52
00:01:42,560 –> 00:01:44,640
تصمیم بگیریم که md5 چه چیزی را وارد می کند
53
00:01:44,640 –> 00:01:46,320
و چه چیزی را بیرون می اندازد، بنابراین آنچه من
54
00:01:46,320 –> 00:01:48,079
تصمیم گرفتم این است که بایت ها را
55
00:01:48,079 –> 00:01:49,600
می گیریم و بایت ها را
56
00:01:49,600 –> 00:01:51,360
به روشی که می خواهیم این کار را انجام دهیم این است
57
00:01:51,360 –> 00:01:52,640
که ما می سازیم.
58
00:01:52,640 –> 00:01:55,360
یک شیء حالت که قرار است
59
00:01:55,360 –> 00:01:56,719
تمام اطلاعات
60
00:01:56,719 –> 00:01:58,000
الگوریتمی را
61
00:01:58,000 –> 00:02:02,479
که در هر بایتی که در اختیار داریم، ردیابی کند
62
00:02:02,479 –> 00:02:04,000
و سپس باید نهاییسازی را انجام دهیم
63
00:02:04,000 –> 00:02:06,399
و دلیل آن این است
64
00:02:06,399 –> 00:02:09,280
که md5 روی بلوکهایی کار میکند
65
00:02:09,280 –> 00:02:12,720
که 512 بیت طول
66
00:02:12,720 –> 00:02:16,560
64 بایت، بنابراین اگر رشته ورودی شما
67
00:02:16,560 –> 00:02:18,959
طول درستی نداشته باشد،
68
00:02:18,959 –> 00:02:20,319
باید بالشتک شود
69
00:02:20,319 –> 00:02:21,920
و این در مرحله نهایی سازی اتفاق می افتد،
70
00:02:21,920 –> 00:02:23,360
71
00:02:23,360 –> 00:02:25,680
بنابراین در اینجا من اساساً همان
72
00:02:25,680 –> 00:02:27,599
چیزی را دارم، اما در عوض مستقیماً
73
00:02:27,599 –> 00:02:28,959
در یک دسته فایل ارسال می کنم.
74
00:02:28,959 –> 00:02:30,879
میبینیم که شیء حالت md5
75
00:02:30,879 –> 00:02:33,280
چهار چیز را دنبال میکند
76
00:02:33,280 –> 00:02:35,920
، مهمترین آن این است که متغیر حالت
77
00:02:35,920 –> 00:02:36,640
78
00:02:36,640 –> 00:02:39,920
در انتها این حالت همان
79
00:02:39,920 –> 00:02:42,720
چیزی است که در نهایت به
80
00:02:42,720 –> 00:02:44,480
شکلی که md5
81
00:02:44,480 –> 00:02:47,519
کار میکند، در قسمتهای
82
00:02:47,519 –> 00:02:51,200
512 بیتی عمل میکند. در یک زمان بنابراین اولین چیز این است
83
00:02:51,200 –> 00:02:52,160
که البته
84
00:02:52,160 –> 00:02:55,200
ما باید دقیقاً 64 بایت را وارد کنیم و
85
00:02:55,200 –> 00:02:57,120
سپس آن بایت ها را
86
00:02:57,120 –> 00:03:00,000
به اعداد صحیح تبدیل می کنیم بنابراین کل تکه را می
87
00:03:00,000 –> 00:03:02,000
گیریم و 64 بایت را به
88
00:03:02,000 –> 00:03:04,800
16 عدد صحیح تبدیل می کنیم سپس با
89
00:03:04,800 –> 00:03:05,360
90
00:03:05,360 –> 00:03:08,080
فرآیند به روز رسانی شروع می کنیم. حالت بنابراین ما چهار
91
00:03:08,080 –> 00:03:09,200
متغیر a b c
92
00:03:09,200 –> 00:03:12,239
d داریم که متغیر حالت ما را تشکیل می دهند،
93
00:03:12,239 –> 00:03:15,760
سپس ما 64 بار را مرور می کنیم
94
00:03:15,760 –> 00:03:18,959
و اساساً پیام را
95
00:03:18,959 –> 00:03:20,319
به روشی خاص مخلوط می کنیم،
96
00:03:20,319 –> 00:03:23,040
بنابراین روش کلی که این کار
97
00:03:23,040 –> 00:03:25,680
برای هر یک از 64 مرحله
98
00:03:25,680 –> 00:03:28,720
t است. در اینجا یک میکسر برای آن مرحله وجود دارد
99
00:03:28,720 –> 00:03:31,920
که قرار است بیت ها را با هم مخلوط کند و سپس
100
00:03:31,920 –> 00:03:33,280
ما همچنین می خواهیم اختلاط کنیم
101
00:03:33,280 –> 00:03:35,599
که کدام یک از بایت هایی که از
102
00:03:35,599 –> 00:03:36,640
پیام استفاده می
103
00:03:36,640 –> 00:03:39,680
کنیم 64 مرحله الگوریتم
104
00:03:39,680 –> 00:03:42,879
به چهار دور 16 تایی تقسیم
105
00:03:42,879 –> 00:03:45,840
می شوند. دور ما از میکسر f در
106
00:03:45,840 –> 00:03:47,040
دور دوم
107
00:03:47,040 –> 00:03:49,680
استفاده می کنیم از میکسر g استفاده می کنیم دور سوم میکسر h میکسر
108
00:03:49,680 –> 00:03:51,440
دور چهارم من میکسر
109
00:03:51,440 –> 00:03:55,200
بنابراین این میکسر برای مرحله هر
110
00:03:55,200 –> 00:03:57,040
چیزی که قرار است فقط به شما بگوید کدام یک از
111
00:03:57,040 –> 00:03:58,400
112
00:03:58,400 –> 00:04:00,400
fghi قرار است برای آن مرحله در
113
00:04:00,400 –> 00:04:02,720
الگوریتم استفاده شود.
114
00:04:02,720 –> 00:04:05,200
به طور مشابه، ما
115
00:04:05,200 –> 00:04:06,640
پیام را به ترتیب نمیخوانیم
116
00:04:06,640 –> 00:04:09,920
و بنابراین در دور اول
117
00:04:09,920 –> 00:04:13,120
شما 16 عدد صحیح را به این ترتیب
118
00:04:13,120 –> 00:04:14,319
119
00:04:14,319 –> 00:04:16,560
میخوانید، در دور دوم آن را به ترتیب دیگری میخوانیم و بنابراین
120
00:04:16,560 –> 00:04:18,880
میکسر را برای یک مرحله مشخص
121
00:04:18,880 –> 00:04:22,400
میگیریم و میگیریم. ایندکس you know
122
00:04:22,400 –> 00:04:24,479
کدام عدد صحیح را می خواهیم
123
00:04:24,479 –> 00:04:25,840
از پیام
124
00:04:25,840 –> 00:04:27,440
در هر مرحله بخوانیم و هر
125
00:04:27,440 –> 00:04:29,440
دو را در لیست های بزرگ قرار می دهیم تا در هر
126
00:04:29,440 –> 00:04:30,080
مرحله
127
00:04:30,080 –> 00:04:33,440
بدانیم کدام
128
00:04:33,440 –> 00:04:34,720
int را باید از
129
00:04:34,720 –> 00:04:37,199
این آرایه بخوانیم و کدام ترکیب را
130
00:04:37,199 –> 00:04:38,720
تابعی که قرار است از آن استفاده کنیم،
131
00:04:38,720 –> 00:04:41,520
بنابراین برای تمام 64 مرحله ای که انتخاب می کنیم میکسر
132
00:04:41,520 –> 00:04:42,080
133
00:04:42,080 –> 00:04:45,280
درست را انتخاب می کنیم برای
134
00:04:45,280 –> 00:04:47,040
پیامی که قرار است از آن استفاده کنیم
135
00:04:47,040 –> 00:04:49,840
و سپس فقط از این فرمول استفاده می کنیم
136
00:04:49,840 –> 00:04:50,479
137
00:04:50,479 –> 00:04:52,320
و a را می گیریم و سپس bc و d را با میکسر داخل می کنیم
138
00:04:52,320 –> 00:04:54,160
و سپس آن را اضافه می کنیم
139
00:04:54,160 –> 00:04:56,320
و سپس آن را اضافه می کنیم. پیغام در
140
00:04:56,320 –> 00:04:58,000
نمایه مشخص شده در
141
00:04:58,000 –> 00:05:00,880
و سپس به این علامت تصادفی اضافه می کنیم،
142
00:05:00,880 –> 00:05:02,240
این فقط یک چیز دیگر است که
143
00:05:02,240 –> 00:05:03,840
فقط به این دلیل است که الگوریتم
144
00:05:03,840 –> 00:05:04,960
می گوید دوتا
145
00:05:04,960 –> 00:05:08,000
خوب است، بنابراین به حلقه اصلی،
146
00:05:08,000 –> 00:05:11,120
بیت های خود را مخلوط می کنیم، بیت های خود را می چرخانیم
147
00:05:11,120 –> 00:05:15,600
سپس a را به b اضافه می کنیم. و سپس میچرخانیم
148
00:05:15,600 –> 00:05:18,479
، b c d را میگیریم و میبینید که
149
00:05:18,479 –> 00:05:18,960
d
150
00:05:18,960 –> 00:05:21,360
را میگیریم و آن را در جلوی اینجا قرار میدهیم، پس از
151
00:05:21,360 –> 00:05:22,479
آن d
152
00:05:22,479 –> 00:05:26,000
abc داریم که تمام وجود دارد، بعد از
153
00:05:26,000 –> 00:05:28,720
اینکه همه بیتهایمان را به این ترتیب 64 بار با هم مخلوط میکنیم،
154
00:05:28,720 –> 00:05:29,600
155
00:05:29,600 –> 00:05:32,160
سپس هر چه که بودیم. متغیرهای حالت اکنون هستند
156
00:05:32,160 –> 00:05:33,039
157
00:05:33,039 –> 00:0