احتمالا همگی این عبارات را شنیده اید و با بعضی از آنها سر و کار دارید. در این مقاله می خواهم آنها را اساسی برسی کرده و بصورت شفاف با تفاوت های آنها آشنا شویم.
Encoding
انکودینگ عبارت است از کد گزاری اطلاعات جهت نگهداری و استفاده مجدد به طوریکه به راحتی از کد آن به اطلاعات آنها برسیم. مثلا حروف الفبای فارسی انکودینگ های مختلفی دارد. به تصویر بالا مراجعه کنید. مانند ASCII, Unicode, URL Encoding, Base64 .
Encryption
عبارت است از تغییر اطلاعات جهت مخفی وسری نگهداشتن آن. به عنوان مثال ارسال نامه به شخص به گونه ای که فقط او بتواند متن نامه را بخواند. ویا ارسال کلمه عبور بصورت امن در داخل اینترنت. هدف اصلی در اینجا قابلیت استفاده نبوده و فقط می خواهیم مطمئن شویم که اطلاعات توسط گیرنده اصلی آن قابل استفاده باشد. مانند: AES, Blowfish, RSA
Hashing
تغییر یک داده یا اطلاعات بصورتی که یکپارچگی آن حفظ شده و بتوان فهمید که فایلی تغییر کرده یا نکرده و یا کاربرد امنیتی می توان استفاده کرد. هرچند در برخی تقسیم بندی ها Hashing را نیز جزو انواع Encryption قرار می دهند اما بالعکس Encrypt که دوطرفه است یعنی اول کد می شود و بعدا دیکد، کاملا یکطرفه می باشد و می توان فقط جهت مقایسه مثلا اینکه یک ورودی با مقدار هش داده شده برابری می کند یا نه استفاده کرد. مثلا فرض کنید پسورد در یک سیستم بصورت هش ذخیره شود، در موارد دیگری که پسورد از ورودی دریافت می شود می توان هش آن دو را باهم مقایسه کرد که اگر یکی بود یعنی پسورد درست وارد شده است. بصورت فنی هش یک ورودی می گیرد و آن را به یک طول رشته ثابتی تبدیل می کند که چند شرط دارد: همیشه یک وردی یک خروجی داشته باشد، همچنین به هیچ عنوان نباید از خروجی به ورودی رسید. همانطور که اشاره کردم از هش برای حفظ یکپارچگی و یا جهت امنیت می توان استفاده کرد. مانند: SHA-3, MD5 (Now obsolete)
Obfuscation
کاربر آن برای وقتی است که نخواهیم معنی چیزی فهمیده شود و معمولا در کدها جهت جلوگیری از مهندسی معکوس به کار گرفته می شود. مانند JavaScript Obfuscator, ProGuard
منبع: بایت کد
بسیار عالی