سلام دوستان.
میخاستم بدونم کاربرد فایلهای snk. در C# چی هست و چه استفاده ای ازش میشه.
که به این شکل هم در پروژه قرار داده میشه
[assembly: AssemblyKeyFile("PublicPrivateKeyFile.snk")]
سلام دوستان.
میخاستم بدونم کاربرد فایلهای snk. در C# چی هست و چه استفاده ای ازش میشه.
که به این شکل هم در پروژه قرار داده میشه
[assembly: AssemblyKeyFile("PublicPrivateKeyFile.snk")]
فایل Snk. برای ساخت Strong-Named Assemblies استفاده میشه که این فایل تشکیل شده از نام اسمبلی ، ورژن برنامه ، یک کلید عمومی و یک کلید خصوصی که با عکس الگوریتم های رمزنگاری نامتقارن ، امضای دیجیتالی برای فایل شما تولید میشه که این امضا به انتهای فایل باینری شما اضافه خواهد شد تا برخی مسائل امنیتی رو در راستای عدم سو استفاده از فایل چک بکنه
آخرین ویرایش به وسیله fafa_n6190 : پنج شنبه 03 اردیبهشت 1394 در 15:17 عصر
خواهش می کنم . به راحتی!
توی Solution روی پروژه Right Click کن و به Properties برو ، توی تب Signing یه snk یا pfx رو به روش زیر ایجاد کن
Untitled23.jpg
با کلیک بر روی گزینه New فرم زیر به نمایش در میاد ، که اگر تیک پسورد را بگذارید یک Personal Information Exchange pfxتولید میکنه در غیر این صورت فایل strongly named key snk برات می سازه ، نوع الگوریتم رمزنگاری رو هم میتونی انتخاب کنی :)
Untitled234.jpg
مرسی عالی بود.
بعد با AssemblyKeyFile کد رو به برنامه import کنم ؟همین؟دیگه برنامه اعتماد سازی شد؟
ممنون
باید چیز به درد بخوری باشه
میشه بیشتر توضیح بدید؟
والا تا جایی که بنده اطلاع دارم ، تو یه برهه ای از زمان یه مشکلی به وجود آمده بوده به نام DLL_Hell یا "جهنم DLL" ، این مشکل رو به این صورت در نظر بگیرید که چندین اسمبلی هم نام ولی با نسخه های متفاوت توسط شرکت یا مجموعه ای ارائه میشد و مشکلی که بود فرضا دو نرم افزار با اسمبلی های نسخه 1 و 2 همزمان بر روی سیستم قابل استفاده نبود! با اومدن strong name به معنای نامگذاری قوی ، این امکان فراهم شد تا بتونید چندین نسخه متفاوت از یک اسمبلی رو در کنار هم بر روی یک سیستم داشته باشید و یک برنامه بتونه با یک نسخه مشخص از آن اسمبلی کار کنه.
اگر من یک اسمبلی رو ایجاد کرده و اون رو بصورت قوی نامگذاری کنم، سپس اگر شخص دیگه ای بخواد از اون اسمبلی استفاده کنه، اون شخص از طریق کلید عمومی و سایر مشخصاتی که همراه اسمبلی وجود داره، اطمینان حاصل میکنه که اون اسمبلی رو من نوشتم نه شخص دیگه ای.
به این صورت که یک زوج کلید خصوصی و عمومی ایجاد میشه ، اسمبلی به وسیله کلید خصوصی من امضا میشه و از طریق کلید عمومی همراه اسمبلی قابل چک شدن هست که آیا این اسمبلی توسط من امضا شده یا خیر.
برای نام گذاری قوی ساخت snk با روش قبل کافیست ، لازم نیس شما کار دیگری انجام بدید. فقط فایل زوج کلید باید پیش خودتون محفوظ باشه و دست کسی نیوفته!
این کار باعث افزایش امنیت فایل شما خواهد شد به طوری که اگر کسی (به وسیله HEX editor یا...) دستکاری در فایل شما ایجاد کنه یا قصد نفوذی داشته باشه با خطای زیر رو به رو خواهد شد.
snexception.gif
An unhandled exception of type 'System.IO.FileLoadException' occurred in system.windows.forms.dll Additional information: Strong name validation failed for assembly 'MyAssembly.Test'.
البته که مسائلی تحت عنوان Strong Name Remove یا Signature Remove هم مطرح هست. پروتکتورهایی مثل SmartAssembly و .. هم در هنگام Obfuscate کردن اسمبلی ها از فایل های snk بهره می برند.
آیا امکانش هست بوسیله این کلیدهای snk عملیات کریپت رو انجام بدیم?
بله ، چرا که نه ...!؟
Using a .NET .snk Key File for RSA Encryption
سلام
من این فایل snkرو ایجاد کردم اما بعدش برنامه دیگه اجرا نمیشه (عکس ضمیمه)
اون کامپوننت که گیر میده واسه تاریخ شمسی هستش !
یعنی از هر dll (که ایجاد بشه یا مثا این اضافه بشه) باید یه snl واسه خودش داشته باشه !؟
dll های استیمول سافت و ... منظورم هست !
با تشکر از fafa_n6190
مرجع فارسی : http://www.dotnettips.info/post/1114/strong-name
این همه مطلب خوندیم هنوز یاد نگرفته ، راه دور زدنش رو یاد گرفتیم :)
حذف SN با :
http://www.nirsoft.net/dot_net_tools...me_remove.html
لطفا یکی در مورد این روش چک کردن sn در برنامه هم توضیح بده !
که کدها رو کجا باید نوشت ؟
http://stackoverflow.com/questions/3...-a-strong-name
آخرین ویرایش به وسیله ghasem110deh : یک شنبه 20 اردیبهشت 1394 در 16:42 عصر دلیل: اضافه کردن متن