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

 

شاید بپرسید اصلا رمزنگاری چی هست ؟! 

داستان رمزنگاری اینه که ما تصمیم داریم به دلایل مختلفی که در پائین توضیح میدم یک متن یا محتوایی رو به یک شکل دیگر ( یک رشته رمزآلود ) تبدیل کنیم.

حالا چرا میخواییم اینکارو بکنیم ؟!!

به چند دلیل ممکنه شماهم به عنوان برنامه نویس تصمیم به این کار بگیرید :

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

 

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

 

یا مثلا بعضی مواقع میخواییم حتی یسری اطلاعات رو برای همیشه به یک شکل دیگه تبدیل کنیم که اصلا هم نیاز نداریم تا شکل اولش رو دوباره برگردونیم ( مثل رمز کردن پسورد کاربران و ذخیره اون در دیتابیس )

که اینطوری اگر کسی به هر طریقی به دیتابیس ما دسترسی هم پیدا کنه یک شکلی از پسورد کاربران رو ببینه که نه بتونه متن اصلی اونو بدست بیاره نه بتونه بیاد با همون وارد حساب اون کاربر بشه و به قولی سو استفاده از حساب کاربری اون کاربر بکنه

 

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

 

حالا یه تقسیم بندی از نظر قابلیت بازگشت پذیری اگر انجام بدیم میشه گفت رمزنگاری به دو صورت قابل بازگشت و غیر قابل بازگشت انجام میشه که به حالت دومی اصطلاحاً هش کردن میگن

 

حالت اول هم که قابل بازگشت هست یعنی  میشه از داده رمز شده به داده اصلی رسید و به دو شکل کلی انجام میشه : 1- متقارن 2- نامتقارن

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

 

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

در روش نامتقارن ما دو کلید در کنار متن یا داده مورد نظر نیاز داریم یک کلید رو موقع رمزنگاری استفاده میکینم و یک کلید رو موقع بازگشایی و عملا دو تا کلید متفاوت برای ایننکار استفاده میکنیم.

منظور از رمزگشایی هم یعنی کشف داده اصلی (Plain Text) از روی رشته رمز شده (CipherText) هست.

 

حالا که با مفاهیم پایه ای رمزنگاری و رمزگشایی آشنا شدید بیایین به چند تا از الگوریتم هایی که در زبانهای برنامه نویسی مختلف از جمله PHP میتونیم استفاده کنیم تا هر نوع از رمزنگاری رو انجام بدیم آشنا بشیم

 

برای انکد کردن متن جهت ذخیره سازی در دیتابیس های مختلف و یا استفاده در انواع سیستم ها از الگوریتم های زیر استفاده میکنیم :

ASCII ،UNICODE ،URL ENCODING و BASE64

 

برای هش کردن الگوریتم های محبوب عبارتند از :

MD5   ,  SHA0 , SHA1 , SHA2

 

برای رمزنگاری متقارن هم الگوریتم های رایج عبارتند از : 

AES
DES
3DES
Blowfish
RC4

...

 

برای رمزنگاری نامتقارن هم الگوریتم ها رایج عبارتند از : 

RSA
ElGamal
...

 

 

امیدوارم براتون مفید بوده باشه