ورود

نسخه کامل مشاهده نسخه کامل : چطور بر روی بانک اطلاعاتی پسورد بزارم؟



am_merman01
31-10-2017, 02:43
باسلام خدمت دوستان عزیز:n11:

میخواستم بدونم آیا راهی وجود داره که یک برای ورود به فایل پایگاه و دسترسی به داده های داخلی اون پسورد گذاشت؟:n13:
اگر بشه بعد چطور باید از این پسورد موقع کد نویسی محافظت کنم که حداقل برنامه نویس های خیلی آماتور (مثل خودم) به راحتی نتونن بهش دسترسی داشته باشن؟

پیشاپیش از کمک شما عزیزان تشکر میکنم:n16:

_H2_
06-11-2017, 22:10
سلام
1) اگر بحث امنیت اطلاعات در شبکه وهک و... است، در نهایت میتوانید امنیتی معقولی را برقرار کنید !
یعنی کسی که کاربران در شبکه بسته به اختیارات شان به اطلاعات دسترسی داشته باشند.

ولی

2) اگر اهداف ایرانی دارید ، جواب نهایی خیر و یا خیلی مشکل است.
منظورم چیست؟
اگر هدف تان آن است که سایر برنامه نویس ها و رقبا دیتابیس شما را نبینند، نفهمند چه جداولی دارید، چه اطلاعاتی نگاه میدارید و...
یعنی فردی که admin رایانه است و نرم افزار شما را خریده و نصب کرده، او هم نتواند به دیتابیس متصل شود...
در این صورت باید عرض کنم،
امنیت دیتابیس ها برای این مسائل "خاله زنکی" طراحی نشده.
در واقع شما نمیتوانید اطلاعات را از admin سیستم عامل مخفی کنید.
البته کارهایی میتوان کرد ولی در نهایت admin سیستم عامل کمی اطلاعات داشته باشد میتواند به اطلاعات دسترسی پیدا کند.

درهرصورت شما مشخص بفرمائید، هدف تان مورد اول یا دوم است ، بهتر میتوان بحث را ادامه داد...

am_merman01
07-11-2017, 00:28
باسلام خدمت استاد گرامی
خداروشکر بالاخره یکی به اینجا سر زد ، یواش یواش داشتم احساس رابینسون کروزوئه رو پیدا میکردم (بگذریم)

حقیقتش من به تازگی شروع کردم برنامه ای که دارای بانک اطلاعاتی هست رو طراحی کنم (یعنی به طور کامل آماتور هستم)
قصدم تولید یک برنامه کنترل زمان سرویس و نگهداری ماشین آلات صنعتی هستش ولی تو همین اولین مراحل کار چندتا سئوال خیلی ذهنم رو مشغول کرده بود.
در قسمتی از برنامه قصد دارم هرکاربری با یوزر و پسورد خودش وارد برنامه بشه و اطلاعات رو ثبت کنه تا اگه بعدا برای امور ممیزی شرکت لازم شد بشه فهمید که این اطلاعات توسط چه شخصی به ثبت رسیده. حالا اینجا نگران این مسئله هستم که این برنامه من قراره روی یک کامپیوتر معمولی نصب بشه و اگر کاربری کمی اطلاعات داشته باشه ممکنه بتونه به راحتی وارد بانک اطلاعاتی برنامه شده و یک سری اطلاعات رو به صورت دستی تغییر بده و یا حذف کنه (خلاصه کلا سیستم ثبت داده ها رو به هم بریزه)(باور کنید همچین افرادی در شرکت ها کم نیستن ، بنده بارها تو شرکت خودمون به چشم دیدم) . میخواستم بدونم راه حلی وجود داره که بشه از این کار جلوگیری کرد؟
بازخوانی داده ها توسط دیگران چندان برام مهم نیست ، بیشتر نگران این مسئله هستم که با پاک کردن یک ستون یا یک جدول حتی به صورت اشتباه ، ثمره چندین ماه ثبت اطلاعات به کلی نابود بشه.(هرچند میشه هر ماه یک بکاپ از بانک تهیه کرد)
ولی اگر دوستان در این باره نظر یا تجربه ای دارند خوشحال میشم که بتونم از راهنمایی شون استفاده کنم.
پیشاپیش از توجه و راهنمایی شما تشکر میکنم.:n40:

_H2_
08-11-2017, 02:54
سلام


...بالاخره یکی به اینجا سر زد...
یک مشکل کوچکی که وجود دارد، همین کار وگرفتاری است که باعث تاخیر در سرزدن میشود.
بعد هم که آدم لاگین میکند ، میبیند روزها و شاید هفته ها از تاریخ طرح سوال گذشته! دیگر آدم مطمئن نیست که جواب دادن فایده دارد یا نه...
یعنی برخی مواقع آدم میبیند زمان زیادی گذشته و دیگر تاپیک را کلا جواب ندهد آبرو مندانه تر است :n40:



گر کاربری کمی اطلاعات داشته باشه ممکنه بتونه به راحتی وارد بانک اطلاعاتی برنامه شده و یک سری اطلاعات رو به صورت دستی تغییر بده
بطور قطع این یک نگرانی صحیح و منطقی است ومیتواند باعث دورزدن خط مشی های امنیتی برنامه شود.
شاید "تایید" یا "درج" یک اطلاعاتی را فقط باید یک کاربر خاص انجام دهد ولی با "لو" رفتن connectionString وکمی اطلاعات هرکسی میتواند دیتای دلخواه خود را در دیتابیس تغییر دهد.
که بطور خاص در موارد "مالی" میتواند پیامدهای خطرناکی داشته باشد.

خوشبختانه برای این نگرانی ها ، بحث های طولانی تا سطح ریز ترین موارد وجود دارد و برای هریک راه حل های خوب ومتعددی وجود دارد.
بطور مثال اولین مسئله حفاظت از ConnectionString و چهار دیتای اصلی آن یعنی IP, Database, User, Pass پایگاه است.
این نگرانی در برنامه های web base تقریبا وجود نداشته و منتفی است ومی ماند برنامه exe تحت شبکه ای که روی رایانه هر کاربر جداگانه نصب میشود.
برای همین مورد شما میتوانید از رمزنگاری های "متقارن" استفاده کنید.
یعنی ConnectionString را در "Setting خود پروژه دات نت" یا "در یک فایل ساده بیرون exe" ذخیره می کنید ولی رمزنگاری شده.

مدیر شبکه یا دیتابیس یا هر مسئول نصب برنامه ، پس از نصب از طریق یک Form/Window کوچک ، مقادیر اتصال به دیتابیس را تنظیم میکند و برنامه هم آنها را رمزنگاری کرده و سپس ذخیره میکند.

برای رمزنگاری میتوان از الگوریتم های معروف و قوی مانند AES و DES استفاده کرد (که در دات نت هم کلاس های مربوطه وجود دارد)
می ماند خود "کلید رمزنگاری و رمزگشایی" که یک مقداری است مانند "گذرواژه فایل های zip" ...
یعنی بحث بعدی این میشود که خود کلید رمزنگاری چه باشد وکجا ذخیره شود.

البته ...
تا همین جا هم، یعنی فقط یک رمزنگاری باینری با AES و استفاده مستقیم از "کلید" در کدها میتواند جلوی اغلب افرادی را که گفتید بگیرد و شاید برای خیلی از برنامه ها کافی باشد.
شاید هرکسی بتواند به دیتابیس وصل شود ولی گیر آوردن "کلید" از درون کدهای برنامه تان و رمزگشایی فایل AES با کلید مذکور ، خارج از توانایی اغلب افراد کنجکاو است.


استفاده از یک کلید ثابت در کل برنامه و برای همه رایانه ها
کلید رمزنگاری را میتواند در کدتان تکه تکه کنید تا مستقیم و یک تکه درون کدتان نباشد وبا یک عملیات ساخته شود....
مثلا هر بایت کلید از یک تابع بیاید و معکوس در کنار هم قرار بگیرند وقبل از استفاده Reverse شوند !!!
یا در کل خود کلید میتواند توسط یک کلید دیگر رمزنگاری شود که پیدا کردن کلید را از داخل کدها مشکل کند.
و...

یا

استفاده از یک ثابت متفاوت برای هر رایانه ها
در روشی دیگر میتوان "کلید" را وابسته به نسخه سیستم عامل و یا سخت افزار کرد...
مثلاً میتواند خود کلید را از هش md5, sha1 سریال مادربورد یا هارد و... تولید کرد.
تا کلید درون کد نباشد و برای هر رایانه هم فرق داشته باشد
و...

ودر موارد متعدد وجزئیات ونگرانی های دیگر،کارهای این شکلی را میتوان بسته به امنیت مورد نیاز انجام داد.
حالا دیگر نمی دانم تا کجای این کارها که تشریح شد را تجربه کرده اید و کدام بخشش را کامل مسلط نیستید...
موفق باشید و شب خوش.

am_merman01
10-11-2017, 02:19
سلام مجدد خدمت استاد گرامی:n11:


خوشبختانه برای این نگرانی ها ، بحث های طولانی تا سطح ریز ترین موارد وجود دارد و برای هریک راه حل های خوب ومتعددی وجود دارد.
در مورد راه حل هایی که فرمودین شروع کردم به مطالعه یکسری از راه حل ها و پیدا کردن کدهای نمونه که توی اینترنت سایت MSDN موجود بود . ولی متاسفانه به دلیل مسئله اصلی (آماتور بودن این حقیر) با مشاهده هر نمونه کد هزارتا سئوال جدید برام بوجود میاد.


یعنی ConnectionString را در "Setting خود پروژه دات نت" یا "در یک فایل ساده بیرون exe" ذخیره می کنید ولی رمزنگاری شده
در این مورد سعی کردم رشته اتصال رو در Setting ذخیره کنم ولی یک مشکل کوچیک برام پیش اومد و اون هم این بود که هر کاری کردم نتونستم اون رو به شکل دینامیک در بیارم ( منظورم به کمک دستور Application.StartupPath) چون توی قسمت Setting از کد نویسی حمایت نمی کنه (یا شاید هم من بلد نیستم).
سئوال بعد اینکه آیا برای ذخیره اون در Setting برنامه باز هم باید اون رو رمز نگاری کنم یا این کار به طور اتوماتیک انجام میشه؟


اولین مسئله حفاظت از ConnectionString و چهار دیتای اصلی آن یعنی IP, Database, User, Pass پایگاه است.
متاسفانه با اینکه چندین مقاله نسبتا طولانی و نگاهی اجمالی به چندین کتاب در مورد آموزش SQL هنوز نتونستم برای این سئوالم جواب پیدا کنم .
آیا میشود برای دیتابیسی که توسط خود VS طراحی میشود User و Pass ساخت؟ چگونه؟ یا این قسمت در رشته اتصال فقط مخصوص دیتابیس های آنلاین و تحت شبکه است؟



برای رمزنگاری میتوان از الگوریتم های معروف و قوی مانند AES و DES استفاده کرد (که در دات نت هم کلاس های مربوطه وجود دارد)
می ماند خود "کلید رمزنگاری و رمزگشایی" که یک مقداری است مانند "گذرواژه فایل های zip" ...
یعنی بحث بعدی این میشود که خود کلید رمزنگاری چه باشد وکجا ذخیره شود.

البته ...
تا همین جا هم، یعنی فقط یک رمزنگاری باینری با AES و استفاده مستقیم از "کلید" در کدها میتواند جلوی اغلب افرادی را که گفتید بگیرد و شاید برای خیلی از برنامه ها کافی باشد.
شاید هرکسی بتواند به دیتابیس وصل شود ولی گیر آوردن "کلید" از درون کدهای برنامه تان و رمزگشایی فایل AES با کلید مذکور ، خارج از توانایی اغلب افراد کنجکاو است.
در مورد این مسئله که فرمودین چندتا سورس کد و آموزش به زبان انگیلیسی پیدا کردم و دارم مطالعه میکنم (البته خود مسئله به زبان فارسی هم بسیار برام پیچیده بود چه برسه حالا که باید اول ترجمش کنم بعد بفهمم چیه). و صد البته همانگونه که فرمودین تا همین جاش برای من کافیه تا بتونه جلوی دستکاری افراد کنجکاو رو بگیره (برنامه فوق امنیتی CIA که نمیخوام طراحی کنم :n02:)

خلاصه تا همین مواردی رو که فرمودین یاد بگیرم خودش کلی برام سئوال ایجاد میکنه که اگر عمری باقی بود سعی میکنم از وجود شما کمک بگیرم.
به هر حال باز هم مثل همیشه از صبر و حوصله شما تشکر میکنم.:n40:

_H2_
11-11-2017, 00:23
سلام
چندروزی اجازه دهید ببینم فرصت میکنم ، یک نمونه کد ساده برایتان درست کنم یا نه...

_H2_
11-11-2017, 00:48
گفتم برخی سوالات را همین الان پاسخ دهم...

...نتونستم اون رو به شکل دینامیک در بیارم ... چون توی قسمت Setting از کد نویسی حمایت نمی کنه...
امکان استفاده از Setting بسادگی برای ذخیره تنظیمات مختلف برنامه وجود دارد.


آیا برای ذخیره اون در Setting برنامه باز هم باید اون رو رمز نگاری کنم یا این کار به طور اتوماتیک انجام میشه
تمام Setting های برنامه تان در دات نت بصورت یک فایل xml بدون رمزنگاری و شفاف در درایو C و مسیر پروفایل کاربر جاری ذخیره میشود.
اگر دیتای مهمی مانند User,Pass دارید باید خودتان رمزنگاری کنید.


یا میشود برای دیتابیسی که توسط خود VS طراحی میشود User و Pass ساخت؟
بله
تفاوت خاصی وجود دارد فقط باید مراحل را طی کنید.
حتی شما میتوانید برای دسترسی به تک تک ستون جداول حق دسترسی مشخص کنید
فقط باید دقت کنید که در نهایت این User,Pass ها، کامل در دیتابیس شما ذخیره نمیشود.
یعنی مانند یک فایل zip نیست که password بدهید و فایل را کپی کنید و... و password در جاش باقی بماند
این تنظیمات امنیتی باید در زمان نصب برنامه تان و در رایانه مقصد (مجدد) انجام شود.

در SQL Server دو مفهوم نزدیک هم وجود دارد که یکی Login است و دیگر User ...
با دستورات CREATE LOGIN و CREATE USER میتوانید یک user,pass ایجاد کنید.
این ها دستورات sql هستند و (درصورت داشتن مجوز) مانند SELECT, UPDATE, INSERT و... قابل اجرا هستند.

میتوانید این کارها را در برنامه ای کوچک که برای نصب نوشته اید، پیاده سازی کنید.
شب خوش.

_H2_
19-11-2017, 00:26
سلام
برای نمونه رمزنگاری رشته اتصال یک پروژه ساده حاضر کردم، نگاهی بیاندازید
دانلود مستقیم:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
موفق باشید.

am_merman01
19-11-2017, 02:06
با سلام فراوان خدمت استاد گرامی


سلام
برای نمونه رمزنگاری رشته اتصال یک پروژه ساده حاضر کردم، نگاهی بیاندازید
دانلود مستقیم:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
موفق باشید.

تشکر فراوان از زحمتی که کشیدید
فقط ی مشکل کوچیک روی لینک دانلود وجود داره(در هنگام دانلود با خطای فایل موجود نیست مواجه میشم)

چون به برنامه شما دسترسی کامل نداشتم چند تا سئوال برام پیش اومد
اشیاء KEY و IV (توی بعضی سایت ها دیدم بهش میگن وکتور) دقیقا چه کاری انجام میدن؟:n13: خوب KEY تا حدودی از اسمش پیداس که احتمالا یه کلید ایجاد میکنه که داده ها بر اساس اون رمزنگاری میشن ولی وکتور چیه؟

توی یک نمونه کد دیدم که کلید و وکتور رو به صورت یک آرایه از نوع بایت تعریف کرده بود . طول آرایه کلید 32 بود و طول آرایه وکتور 16 ولی توی چندتا مثال دیگه اعداد متفاوتی دیدم :n36: طول آرایه کلید به چه چیزی بستگی داره ؟


(از اونجایی که هنوز مفهوم کلی رمز نگاری رو درک نکردم میپرسم:n41:) آیا با همین کد میشه از سایر روش های رمزنگاری مثل SHA , MD5 و .... استفاده کرد(منظورم صرفا با تغیر AES به مثلا MD5) یا هر روش سینتکس خواص خودش رو داره؟

{
بعد از ارسال پست این مطلب رو توی سایت شما دیدم لازم شد برگردم بیام اصلاح کنم

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ظاهرا MD5 یک آلگوریتم رمزنگاری نامتقارن هستش و به طور کلی داستان رمزنگاری و ساخت کلید و سرتیفیکتش فرق میکنه:n02:
}

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در مورد کد بالا من این رو متوجه شدم ، اگر اشتباه است لطفا اصلاح نمایید
در این تابع ابتدا چک کردید که متن ارسال شده به تابع خالی نباشد ، در صورت وجود رشته اون رو به یک آرایه از نوع اعداد بایت تبدیل کردید
بعد یک شی از کلاس رمزنگاری AES ساختید
متغیر های وکتور و کلید رو مقدار دهی فرمودین
یک متد از شی AES نمونه گرفتید که ظاهرا شی ی است که قراره عمل رمز نگاری رو انجام بده
یک قسمت از فضای حافظه رو تعریف نمودید که قراره اطلاعات رمزنگاری شده به طور موقت اونجا ذخیره بشن
بعد هم یک شی دیگه ایجاد کردید که اطلاعات رو به صورت یک بایت یک بایت میخونه و رمزنگاری میکنه و در اون فضای تعریف شده از حافظه ذخیره میکنه
ولی کار دو خط آخر رو اصلا متوجه نشدم (البته اگه تا همینجاش رو هم درست فهمیده باشم:n09:)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

باز هم از زحمات و توجه شما تشکر میکنم

am_merman01
19-11-2017, 02:14
شرمنده این سوال رو اینجا مطرح میکنم ولی دیدم خیلی ارزش نداره بخاطرش یه تاپیک جداگانه باز کنم
توی نمونه کد پایین

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
توضیحاتی که بعد از تک کوتیشن قرار میگیرن توی نسخه نهایی برنامه ( منظورم نسخه Release) حذف میشن؟ یا اینکه این توضیحات همچنان اونجا هم باقی میمونن؟

_H2_
19-11-2017, 13:04
سلام

در هنگام دانلود با خطای فایل موجود نیست مواجه میشم
احتمالا بد کپی کردیده اید، نمیدانم ... با چند مرورگر امتحان کردم ...
مجدد با لینک این را امتحان کنید، یا مرورگر دیگری را امتحان کنید، اگر دانلود منجر دارید، موقت غیر فعالش کنید.
اگر نشد جای دیگرا آپلود میکنم.
ConnectionString.zip ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])
برای رفع نقص خودم عرض میکنم، شرایط رایانه تان چیست؟ چه مرورگری استفاده کردید؟ برنامه مدیریت دانلودی نصب داشتید؟ اگر نقصی وجود دارد ، میخواهم بفهمم مشکل کجاست تا در رایانه خودم شبیه سازی اش کنم و متوجه علت آن شوم تا رفعش کنم...


وکتور چیه؟
در رمزنگاری های الگوریتم طوری پیش میرود که خروجی بایت های قبلی در رمزنگاری بایت های جدید تاثیر دارد
یعنی اگر من یک بایت را در وسط دیتاعوض کنم، کل رمزنگاری پس از آن تغییر میکند و مشابه قبل نخواهد بود.
فرض کنید رمزنگاری رشته 123456789 بشود ABCDEFGHI
آنگاه شاید رمزنگاری رشته 123406789 بشود ABCDPONUX
مقدار IV شروع این دیتا برای بایت های اولیه است.
در کل شما میتوانید تلفیق IV و Key را با هم بعنوان Password درنظر بگیرید.


طول آرایه کلید به چه چیزی بستگی داره ؟
به الگوریتم
اعدادی که شما ذکر کردید مربوط به الگوریتم AES است.
این اطلاعات به راحتی از مستندات قابل استخراج است یا در کلاس های مختلف property هایی مانند KeySize وجود دارد که این ارقام را گزارش میکنند.


آیا با همین کد میشه از سایر روش های رمزنگاری مثل SHA , MD5 و .... استفاده کرد(منظورم صرفا با تغیر AES به مثلا MD5
شاید بتوان الگوریتم های عادی حوزه رمزنگاری را به سه دسته تقسیم بندی کرد.
الگوریتم های نامتقارن
الگوریتم های متقارن
و الگوریتم های یک طرفه (هش)

الگوریتم AES یکی از معروف ترین الگوریتم های متقارن است.
کد فوق برای سایر الگوریتم های متقارن هم قابل استفاده است.
مانند DES یا TripleDES یا Rijndael و...

ولی انواع SHA ها و MD5 ها الگوریتم های یک طرفه هستند.
اطلاعاتی که با این الگوریتم ها رمزشود دیگر قابل رمزگشایی نیستند !
بد نیست بدانید که در ارتباط رمزنگاری پیشرفته ای مانند پروتکل SSL از هر سه این خانواده الگوریتم ها در کنار هم و همزمان استفاده میشود وهرکدام امنیت بخشی از کل پروتکل را تضمین میکند ...


ولی کار دو خط آخر رو اصلا متوجه نشدم
معمولا رمزنگاری ورمزگشایی بلوک آخر اطلاعات کمی متفاوت است و تابع FlushFinalBlock این رمزنگاری در نقطه انتهایی را مدیریت میکند.

خط بعدی هم که واضح است...
همانطورکه متوجه شده اید، کل فرآیندهای رمزنگاری روی داده های خام باینری انجام میشود (آرایه های بایتی)
من خواستم که ورودی و خروجی تابع ام string باشد.
حتی رشته رمزنگاری شده هم string باشد.
پس در شروع رمزنگاری با فرمان UTF8.GetBytes متن را به آرایه باینری تبدیل کرده ام.
و در پایان عملیات با Convert.ToBase64String آرایه باینری رمزشده بی معنی را به متنی تبدیل کرده ام.
این الگوریتم به نام Base-64 شناخته میشود و در "وب" ویا "xml" ها و... بسیار کاربرد دارد.
الگوریتم Base-64 یک اطلاعات باینری به متنی با حروف استاندارد اسکی تبدیل میکند.
مثلا Base-64 میتوانید یک "تصویر" یا "آهنگ" را در فایل xml که فایلی متنی است ذخیره و منتقل کنید

در این مثال میشد از Base-64 استفاده نکرد ولی باید خروجی تابع رمزنگاری را [ ]byte میکردیم.


توضیحاتی که بعد از تک کوتیشن قرار میگیرن توی نسخه نهایی برنامه ( منظورم نسخه Release) حذف میشن؟
خیلی واضح است...
جواب کوتاه آن است که حذف میشود و جواب بلدتر چنین میشود:
کل دستورات متنی CSharp یا VB ما فرآیند "کامپایل" رویش انجام میشود.
تمام موارد "توضیح شده Comment" را کلا کامپایلر نادیده میگیرد.
اصلا کامپایلر این بخش ها را نمیبیند که بخواهد کاری کند...
دستورات متنی تایپ شده ما هم به همان صورت باقی نمی ماند، این دستورات به زبان ماشین (یا در دات نت به زبان میانه IL) کامپایل میشود.

مثلا فرمان زیر را در نظر بگیرید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

خروجی کامپایل این دستورات چنین است
این اعدادی است که واقعا در dll یا exe قرار میگیرد.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

این اعداد با نماد متنی IL (جهت نگارش و فهم ساده تر) چنین بیان میشود

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در کدکامپایل شده حتی "نام متغییرهای محلی درون توابع" هم بی معنی و تعریف نشده است.
(نام متغییرهای سطح کلاس فقط به عنوان متادیتا کلاس در دات نت نگه داشته میشود ولی تمام نام متغییرهای محلی کلا حذف میشود و ذخیره نمیشود)
یعنی حتی نام a و b و c که به متغییرها داده اید دیگر حذف شده و معنی ندارد.
حالا که بنظرتان "توضیحات comment" شما چه جایگاهی در خروجی کامپایل دارد؟!

am_merman01
20-11-2017, 01:03
باسلام و خسته نباشید و تشکر مجدد


سلام

احتمالا بد کپی کردیده اید، نمیدانم ... با چند مرورگر امتحان کردم ...
مجدد با لینک این را امتحان کنید، یا مرورگر دیگری را امتحان کنید، اگر دانلود منجر دارید، موقت غیر فعالش کنید.
اگر نشد جای دیگرا آپلود میکنم.
ConnectionString.zip ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])
برای رفع نقص خودم عرض میکنم، شرایط رایانه تان چیست؟ چه مرورگری استفاده کردید؟ برنامه مدیریت دانلودی نصب داشتید؟ اگر نقصی وجود دارد ، میخواهم بفهمم مشکل کجاست تا در رایانه خودم شبیه سازی اش کنم و متوجه علت آن شوم تا رفعش کنم...


کاملا حق با شما بود (دیشب انقدر خسته بودم که حتی به فکر خودم نرسید:n02:
من در ویندوز 7 از مرورگرد Google Chrome استفاده میکردم (البته اینترنت هم به صورت هات اسپات از گوشی موبایل بر روی لپ تاپ میگرفتم) و ظاهرا مشکل با دانلود منیجر گوگل کرم بود( حتی گزینه Save Link As هم جواب نداد). از اینترنت اکسپلورر:n21: استفاده کردم مشکل حل شد.:n33:
این هم یک اسکرین شات اگر به کارتون میاد
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

معمولا رمزنگاری ورمزگشایی بلوک آخر اطلاعات کمی متفاوت است و تابع FlushFinalBlock این رمزنگاری در نقطه انتهایی را مدیریت میکند.
خداروشکر این قسمت رو هم متوجه شدم (تشکر از توضیح کافی):n40:

و در پایان عملیات با Convert.ToBase64String آرایه باینری رمزشده بی معنی را به متنی تبدیل کرده ام.
مشکلم با همین Convert.ToBase64String و یا Convert.ToBase64CharArray بود که درک نمیکردم فرقش با convert.tostring چیست ؟ که حالا متوجه شدم این تبدیل داده رو به صورت یونی‌کد تبدیل میکنه که خداروشکر رفع ابهام شد.(باز هم تشکر:n40:)

یک سئوال : متدهایی به نام GenerateKey و GenerateIV دیدم که ظاهرا کارشون تولید یک کلید رندم هستش. ولی نتونستم ازشون استفاده کنم. لطفا میشه یه مثال کوچک از طرز استفادشون بزنید.
آیا بهترین روش برای تولید کلید استفاده از همین متد است؟

این اعداد با نماد متنی IL (جهت نگارش و فهم ساده تر) چنین بیان میشود
قبلا یک جایی خونده بودم که کامپایلر توضیحات و فواصل و کلا هر چیز اضافه ای رو نادیده میگیره ولی تاحالا به این واضحی جایی توضیح داده نشده بود.
البته اولین باره که دارم به یک کد IL نگاه میکنم . (چقدر گنگ و نامفهومه البته برای من )


یک سئوال دیگه : ظاهرا فرم برنامه شما از نوع WPF است . کتاب یا مقاله آنلاینی سراغ ندارید که آموزش WPF , WCF برای VB داشته باشد؟

_H2_
22-11-2017, 01:19
سلام

...من در ویندوز 7 از مرورگرد Google Chrome استفاده میکردم...این هم یک اسکرین شات...
از Chrome استفاده نمیکنم.
گمانم زیاد به خودم مطمئن بودم! اشتباه کردم باید خروجی برنامه را در مرورگرهای معروف امتحان میکردم.
ممنون، بررسی میکنم.


متدهایی به نام GenerateKey و GenerateIV دیدم که ظاهرا کارشون تولید یک کلید رندم هستش. ولی نتونستم ازشون استفاده کنم
بله، برای ساخت کلید شانسی/اتفاقی (Random) مناسب هستند.
خروجی متدهای فوق void است.
مقادیر ساخته شده در همان خصیصه های Key و IV ریخته خواهند شد.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


آیا بهترین روش برای تولید کلید استفاده از همین متد است؟
بله ولی اگر هدف کلید شانسی (Random) باشد که کاربرد هم دارد ... ...
اما
در خیلی از موارد متقارن، کلید از کاربر پرسیده میشود.
مانند گذرواژه فایل zip ، در این موارد تولید Random کلید ، خیلی مطرح نیست
برای تبدیل گذرواژه تایپی کاربر به Key یک الگوریتم رمزنگاری متقارن ، میتوانید از یک الگوریتم هش یک طرفه مانند SHA256 استفاده کنید


کتاب یا مقاله آنلاینی سراغ ندارید که آموزش WPF , WCF برای VB داشته باشد؟
کتابهای کاغذی در مورد WPF زیاد چاپ شده اند و خوب هم هستند.
تنها موارد pdf فارسی در کتابخانه مجازی ام، اینها بودند که برایتان آپلود کردم.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

شب خوش.