|
جوتی
پسر/دختر بابالنگدراز |
||
|
My Favorites:
bbgoal lamp far-near ashoob miladkdz rohmamiya acetaminophen debug smartdevice farstec khak aaab nochagh persiangirl parsmedia w3schoolsir azemat sargardoon mahoordad techopedia My Programs: BlogClient MinsweeperRobot Calculator CalcWebSrvc 2unicode HuffmanCode FileValidator ConvexHall2D FSProject IISLog Options: No CSS CSS Layout |
FileValidator
سلام امروز زد به سرم که یه برنامه بنویسم که با استفاده از اون بشه از تغییر کردن فایها خبردار شد. خوب برنامه راحتی است، باید یک کپی از هر فایل بگیریم و هر بار که برنامه اجرا شد همه آن فایلها را بیت به بیت با هم مقایسه کند! فکر کنم این روش برای دایرکتوری ویندوز من حدود 10 هزار سالی طول بکشه (1.74 گیگا بایت و 13438 فایل) پس باید روش دیگری باشد. با توجه با اینکه این روزها من علاقه شدیدی به Hash پیدا کردهام و همه چیز را Hash شده میبینم! برای این کار هم از Hash استفاده کردم. از آنجایی که Hash برای هر رشته با طول متغیر یک رشته با طول ثابت برمیگرداند و این رشته(Hash) منحصر به فرد است. میتوان Hash فایلها را نگهداری کرد و وقتی خواستیم ببینیم چه فایلهای تغییر کرده اند کافی است که یک بار دیگر Hash آنها را حساب کنیم و با Hash قبلی مقایسه کنیم. البته خیلیها معتقدند که هیچ تابع Hash ای نمیتواند تضمین کند که در ازای هر دو رشته متفاوتی دو hash متفاوت بدهد. (با توجه به متغیر بودن طول رشته ورودی و ثابت بودن طول رشته خروجی نباید هم امکانپذیر باشد) ولی به هر حال تابع Hash الگریتم MD5 خیلی خوب کار میکند بطوری که وقتی من یک فایل BMP که حجم آن حدود 3 مگابایت(1152x864) بود را Hash کردم و پس از آن یک پیکسل سفید آن را سیاد کردم عبارت Hash تغییر کرد. هرچند هنوز هم این برنامه خیلی کند است! (یک جستجو و یک بروزرسانی در بانک ، و یک تبدیل به هش(خواند کل فایل) به ازای هر فایل) ولی حداقل چندهزار سال طول نمیکشد! بخش مهم این برنامه یک کلاس به اسم JootiMD5 است (خودخواه! خودبین! خوپسند! خودپرست! هرچی دلتون میخواد بگین!) که از کلاس MD5CryptoServiceProvider ارث برده است. توابع : Compare : مقایسه کردن یک آرگمان ساده اول با آرگمان دوم که Hash است.(6 تابع بار اضافی داده شده) CompareHexHash : مقایسه کردن یک آرگمان ساده اول با آرگمان دوم که Hash است ولی در آن بجای 256 کاراکتر اسکی فقط از کاراکترهای هگزا استفاده شده(اینجوری ذخیره سازی و انتفالش راحت تره) (2 تابع بار اضافی داده شده) ComputeHexHash : آرگمان ورودی را به Hash از نوع با کاراکتر Hex تبدیل میکند. (3 تابع بار اضافی داده شده) ComputeHash : دو جریان داده (مثلا filestram) میگیرد و Hash اولی را در دومی ذخیره میکند. IsEqual : دو جریان داده (مثلا دو فایل) میگیرد و میگوید که این دو با هم برابر هستند یا نه. حالا این برنامه به چه درد میخوره؟ میشه باهاش فهمید یه برنامه جدید که اینستال شده چه فایلهایی رو تغییر داده یا ایجاد کرده، اگه یه ویروسی لطف کنه و فایلهای exe را تغییر بدهد با این فایل میشه فهمید که اون فایلها تغییر کرده اند و.... چند کاربرد دیگر برای جالب برای Hash : برای پیدا کردن فایلهای یکسان که اسم آنها با هم فرق دارد. پیدا کردن Mirror برای فایلی که قصد دانلود کردن آن را داریم. (در ذخیر بازیابی) پیدا کردن رکورد مورد نظر با پیچیدگی زمانی 1 . و ... Download (به همراه فایل exe) جوتی حاشیه : اگه رابط کاربرش خیلی چرته خودتون درستش کنین! حاشیه 2 : برنامه با VB.Net نوشته شده. حاشیه 3 : از بخشهایی از این کد هم استفاده شده. حاشیه 4 : این الگریتم MD5 عجب شاهکاریه! حاشیه 5 : قراره بعدا فایلهای پاک شده را هم تشخیص بدهد و ...
|
آرشیو ماهیانه:
مهر 81 آبان 81 آذر 81 دی 81 بهمن 81 اسفند 81 فروردین 82 اردیبهشت 82 خرداد 82 تیر 82 امرداد 82 شهریور 82 مهر 82 آبان 82 آذر 82 دی 82 بهمن 82 اسفند 82 فروردین 83 اردیبهشت 83 خرداد 83 تیر 83 امرداد 83 شهریور 83 مهر 83 آبان 83 آذر 83 دی 83 بهمن 83 اسفند 83 فروردین 84 اردیبهشت 84 خرداد 84 تیر 84 امرداد 84 شهریور 84 مهر 84 آبان 84 آذر 84 دی 84 بهمن 84 اسفند 84 فروردین 85 اردیبهشت 85 خرداد 85 تیر 85 امرداد 85 شهریور 85 مهر 85 آبان 85 آذر 85 دی 85 بهمن 85 اسفند 85 فروردین 86 اردیبهشت 86 خرداد 86 تیر 86 امرداد 86 شهریور 86 مهر 86 آبان 86 آذر 86 دی 86 بهمن 86 اسفند 86 فروردین 87 اردیبهشت 87 خرداد 87 تیر 87 امرداد 87 شهریور 87 مهر 87 آبان 87 آذر 87 دی 87 بهمن 87 اسفند 87 فروردین 88 اردیبهشت 88 خرداد 88 تیر 88 امرداد 88 شهریور 88 مهر 88 آبان 88 آذر 88 دی 88 بهمن 88 اسفند 88 فروردین 89 اردیبهشت 89 خرداد 89 تیر 89 امرداد 89 شهریور 89 آرشیو سالیانه: سال 1381 سال 1382 سال 1383 سال 1384 سال 1385 سال 1386 سال 1387 سال 1388 سال 1389 قصههای من: گرگ قسمت اول گرگ قسمت دوم موش کور باغبان جزیره آتشفشان کرم ابریشم توپ قصههای کامپیوتری کتاب VB.NET مقدماتی جزوه ویژوال بیسیک رمزگذاری-رمزگشایی |
|
تمام حقوق این سایت متعلق به امیر احسانی است.
شما حق دارید از مطالب این سایت هرطور که مایل هستید استفاده کنید بشرط اینکه برای آنها هیچ گونه وجهی دریافت نکنید. اگر منبع را هم ذکر کنید ممنون میشم. jooti [at] ehsani [dot] org |
||