کدگذاری اینکدینگ مناسب

لرن سایت,آموزش برنامه نویسی سی شارپ,آموزش طراحی سایت,آموزش برنامه نویسی اندروید,آموزش SQL c# android php jquery,قالب سایت

شما اینجا هستید : صفحه اصلی

با عضویت در کانال تلگرامی لرن سایت ، اولین فردی باشید که از تخفیفات و مطالب جدید خبردار می شوید !

کدگذاری اینکدینگ مناسب

کدگذاری کدینگ مناسب

با سلام و عرض خسته نباشید به همراهان سایت.

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

اگر در پست اینکد دیکد base64 سی شارپ : ( کلیک کنید ) یادتون باشه در مورد کدینگ base64 و کمی هم درباره md5 حرف زدیم.

جهت مشاهده ادامه مقاله به ادامه مطلب رجوع کنید.

تفاوت عمده ای که بین  الگوریتم base64 و md5 وجود دارد این است که md5، هش حساب می شود این به این معنیست که قابل شکستن و بازیابی نیست و زمانی که مقدار ورودی یکسان باشد، خروجی md5 نیز یکسان خواهد بود اما حتی اگر یک بیت از اطلاعات تغییر کند، خروجی هش شده توسط الگوریتم md5 متفاوت خواهد بود. اما base64 قابل بازگشت است و اصلا برای زمانی که می خواهید اطلاعات رد و بدل شده توسط شخص ثالث دیکریپت نشود مناسب نیست. ضمن اینکه sha-256 نیز همانند md5 هش حساب می شود و از امنیت بالاتری از نظر الگوریتمی برخوردار است.

الان شاید سوال در ذهن شما ایجاد شده باشد که خوب، base64 که به آسانی یک کلیک، دیکد می شود. md5 هم که قابل دیکد شدن نیست و این یعنی اگر با md5 مقداری رو کدگذاری کنید (هش کنید) و به سرور ارسال کنید، شما از سمت سرور متوجه نخواهید شد که اطلاعات دریافتی چی هست، پس بهترین راه حل چی هست که هم توسط شخص ثالث کرک نشه و لو نره و هم اینکه وقتی اطلاعات رد و بدل میشه، کلاینت و سرور ( و یا به نوع دیگر، ارسال کننده و دریافت کننده ) از اطلاعات ارسالی و دریافتی آگاه باشن؟ خوب اینجاست که اینکریپشن و دیکریپشن معنی پیدا میکنه. الگوریتم های متفاوتی برای اینکار هست، الگوریتم RSA اولین الگوریتم مخصوص اینکریپشن و دیکریپشن بود که اختراع شد و این الگوریتم بر پایه محاسبات ریاضی هست ( که داخل این محاسبات از مفاهیم Modular arithmetic و اعداد اول استفاده شده ).

نحوه کار با این الگوریتم اینطور هست که ما با ابزار های مربوطه دو تا key  ( کلید ) تولید می کنیم، به نام Public key و Private key. زمانی که اطلاعات ما با یکی از این کلید ها اینکریپت/کدگذاری ( encrypt ) می شود، صرفا زمانی قابل decrypt خواهد بود که فرد مربوطه کلید دیگری را داشته باشد و با استفاده از آن دیکریپت ( decrypt ) کند. حتی با کامپیوتر های کوانتومی فعلی، دیتای اینکریپت شده توسظ RSA قابل شکستن نیست!

مطلب پیشنهادی :  سورس برنامه عوض کردن عکس پس زمینه ویندوز در سی شارپ

به این مثال توجه کنین:

من دو تا کلید دارم به نام ABC و DEF. کلید اول رو نگه می دارم پیش خودم و کلید دوم رو میدم به فرد دیگه. زمانی که من یک چیزی رو با کلید ABC قفل کنم، دیگه هیچکس جز کسی که کلید DEF رو داره نمیتونه اون رو باز کنه. ( حتی خود من، اگر من کلید DEF رو نداشته باشم، نمیتونم قفلی که خودم با کلید اول زدم رو باز کنم! ). این مفهوم کلی الگوریتم RSA هست.

پس اگر میخواهید اطلاعاتی رو بین سرور خودتون و کلاینت رد و بدل کنید، باید توسط public key تولید شده، اطلاعات رو اینکریپت کنید و توی سرور با private key، اطلاعات رو دیکریپت کنید. به هیچ وجه نباید هر دو کلید رو توی سمت کلاینت استفاده کنید، چون در اینصورت اینکریپت بیهوده میشه.  با استفاده از همین متد هم، واتساپ و یا سکرت چت تلگرام، اطلاعات رو peer to peer encryption رد و بدل میکنن و حتی سرور خود واتساپ هم نمیتونه پیام رو باز کنه.

الگوریتم های پیشرفته تری هم برای این موضوع وجود داره که AES نام داره، حتی الگوریتم AES درمقابل نسل های اینده کامپیوتر کوانتومی هم فعلا امن حساب میاد، با اینکه RSA انتظار میره با کمی پیشرفت حوزه کامپیوتر کوانتومی، قابل شکستن بشه.

 

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

 

هرگونه سوالی در این باره داشتید در نظرات مطرح کنید .

موفق باشید / باتشکر

اگه مطلب خوشتون اومد پس لطفا به اشتراک بذارین تا بقیه هم خوششون بیاد :)
  • 4
    Shares

نظرات

مشترک شدن
اطلاع رسانی از :
guest
1 دیدگاه
Inline Feedbacks
View all comments
محمدرضا
محمدرضا
8 ماه گذشته

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