سلام
احتمالا بد کپی کردیده اید، نمیدانم ... با چند مرورگر امتحان کردم ...نقل قول:
نوشته شده توسط am_merman01
مجدد با لینک این را امتحان کنید، یا مرورگر دیگری را امتحان کنید، اگر دانلود منجر دارید، موقت غیر فعالش کنید.
اگر نشد جای دیگرا آپلود میکنم.
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
برای رفع نقص خودم عرض میکنم، شرایط رایانه تان چیست؟ چه مرورگری استفاده کردید؟ برنامه مدیریت دانلودی نصب داشتید؟ اگر نقصی وجود دارد ، میخواهم بفهمم مشکل کجاست تا در رایانه خودم شبیه سازی اش کنم و متوجه علت آن شوم تا رفعش کنم...
در رمزنگاری های الگوریتم طوری پیش میرود که خروجی بایت های قبلی در رمزنگاری بایت های جدید تاثیر داردنقل قول:
نوشته شده توسط am_merman01
یعنی اگر من یک بایت را در وسط دیتاعوض کنم، کل رمزنگاری پس از آن تغییر میکند و مشابه قبل نخواهد بود.
فرض کنید رمزنگاری رشته 123456789 بشود ABCDEFGHI
آنگاه شاید رمزنگاری رشته 123406789 بشود ABCDPONUX
مقدار IV شروع این دیتا برای بایت های اولیه است.
در کل شما میتوانید تلفیق IV و Key را با هم بعنوان Password درنظر بگیرید.
به الگوریتمنقل قول:
نوشته شده توسط am_merman01
اعدادی که شما ذکر کردید مربوط به الگوریتم AES است.
این اطلاعات به راحتی از مستندات قابل استخراج است یا در کلاس های مختلف property هایی مانند KeySize وجود دارد که این ارقام را گزارش میکنند.
شاید بتوان الگوریتم های عادی حوزه رمزنگاری را به سه دسته تقسیم بندی کرد.نقل قول:
نوشته شده توسط am_merman01
الگوریتم های نامتقارن
الگوریتم های متقارن
و الگوریتم های یک طرفه (هش)
الگوریتم AES یکی از معروف ترین الگوریتم های متقارن است.
کد فوق برای سایر الگوریتم های متقارن هم قابل استفاده است.
مانند DES یا TripleDES یا Rijndael و...
ولی انواع SHA ها و MD5 ها الگوریتم های یک طرفه هستند.
اطلاعاتی که با این الگوریتم ها رمزشود دیگر قابل رمزگشایی نیستند !
بد نیست بدانید که در ارتباط رمزنگاری پیشرفته ای مانند پروتکل SSL از هر سه این خانواده الگوریتم ها در کنار هم و همزمان استفاده میشود وهرکدام امنیت بخشی از کل پروتکل را تضمین میکند ...
معمولا رمزنگاری ورمزگشایی بلوک آخر اطلاعات کمی متفاوت است و تابع FlushFinalBlock این رمزنگاری در نقطه انتهایی را مدیریت میکند.نقل قول:
نوشته شده توسط am_merman01
خط بعدی هم که واضح است...
همانطورکه متوجه شده اید، کل فرآیندهای رمزنگاری روی داده های خام باینری انجام میشود (آرایه های بایتی)
من خواستم که ورودی و خروجی تابع ام string باشد.
حتی رشته رمزنگاری شده هم string باشد.
پس در شروع رمزنگاری با فرمان UTF8.GetBytes متن را به آرایه باینری تبدیل کرده ام.
و در پایان عملیات با Convert.ToBase64String آرایه باینری رمزشده بی معنی را به متنی تبدیل کرده ام.
این الگوریتم به نام Base-64 شناخته میشود و در "وب" ویا "xml" ها و... بسیار کاربرد دارد.
الگوریتم Base-64 یک اطلاعات باینری به متنی با حروف استاندارد اسکی تبدیل میکند.
مثلا Base-64 میتوانید یک "تصویر" یا "آهنگ" را در فایل xml که فایلی متنی است ذخیره و منتقل کنید
در این مثال میشد از Base-64 استفاده نکرد ولی باید خروجی تابع رمزنگاری را [ ]byte میکردیم.
خیلی واضح است...نقل قول:
نوشته شده توسط am_merman01
جواب کوتاه آن است که حذف میشود و جواب بلدتر چنین میشود:
کل دستورات متنی CSharp یا VB ما فرآیند "کامپایل" رویش انجام میشود.
تمام موارد "توضیح شده Comment" را کلا کامپایلر نادیده میگیرد.
اصلا کامپایلر این بخش ها را نمیبیند که بخواهد کاری کند...
دستورات متنی تایپ شده ما هم به همان صورت باقی نمی ماند، این دستورات به زبان ماشین (یا در دات نت به زبان میانه IL) کامپایل میشود.
مثلا فرمان زیر را در نظر بگیرید:
خروجی کامپایل این دستورات چنین استکد:int a = 5;
int b = 7;
int c = a + b;
این اعدادی است که واقعا در dll یا exe قرار میگیرد.
این اعداد با نماد متنی IL (جهت نگارش و فهم ساده تر) چنین بیان میشودکد:MSIL Opcode:
1B
0A
1D
0B
06
07
58
0C
در کدکامپایل شده حتی "نام متغییرهای محلی درون توابع" هم بی معنی و تعریف نشده است.کد:MSIL:
ldc.i4.5
stloc.0
ldc.i4.7
stloc.1
ldloc.0
ldloc.1
add
stloc.2
(نام متغییرهای سطح کلاس فقط به عنوان متادیتا کلاس در دات نت نگه داشته میشود ولی تمام نام متغییرهای محلی کلا حذف میشود و ذخیره نمیشود)
یعنی حتی نام a و b و c که به متغییرها داده اید دیگر حذف شده و معنی ندارد.
حالا که بنظرتان "توضیحات comment" شما چه جایگاهی در خروجی کامپایل دارد؟!
