اغلب در مورد مفاهیم Encoding، Encryption و Hashing اشتباه می‌شود، در این مقاله از وب‌‌سایت کنش‌تک به تعریف این مفاهیم می‌پردازیم. 

تفاوت Encryption، Encoding و Hashing چیست؟

Encoding چیست؟

هدف از Encoding تبدیل داده‌ها به صورتی است که سیستم دیگر بتواند از آن استفاده کند. برای مثال دیدن کاراکترهای خاص روی یک صفحه وب. هدف از Encoding مخفی کردن داده‌ها نیست، هدف این است که بتوان از داده‌ها استفاده کرد. 

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

نمونه‌ها : scii, unicode, url encoding, base64

Encryption چیست؟ 

هدف از Encryption تبدیل داده‌ها به صورتی است که از دید بقیه مخفی بماند. برای مثال ارسال نامه‌ای که تنها برای ارسال کننده و دریافت کننده قابل خواندن باشد. در انکد کردن هدف قابلیت استفاده بود، اما در Encryption هدف این است که داده جز برای دریافت کننده/ کنندگان قابل خواندن نباشد. 

برای عمل Encryption یا رمزگذاری و معکوس آن یعنی رمزگشایی یا Decryption به کلید و الگوریتم رمز نیاز داریم. 

نمونه‌ها : aes, blowfish, rsa

Hashing یا درهم سازی چیست؟ 

هدف Hashing اطمینان حاصل کردن از تمامیت و درستی داده است، بدین منظور استفاده می‌شود که اگر در داده چیزی تغییر کرد، مشخص شود.  در عمل درهم سازی نیاز به داده داریم تا یک رشته با طول ثابت و مشخصات زیر تولید شود: 

  • یک ورودی ثابت همیشه یک خروجی ثابت تولید می‌کند.
  • ورودی‌های مختلف، نباید خروجی یکسانی تولید کنند.
  • از داده خروجی به داده ورودی نمی‌رسیم.
  • هر تغییری در داده ورودی، تغییر شدیدی در خروجی ایجاد می‌کند.

از Hashing برای احراز هویت، مبنی بر اینکه داده معتبر است و یا تغییر پیدا کرده است استفاده می‌شود. 

نمونه‌ها : sha-3, md5 و غیره.

md5 در حال حاضر منسوخ است.

خلاصه : 

Encoding جهت حفظ قابلیت استفاده از داده‌ها در سیستم‌های دیگر است و از یک الگوریتم برای encoding و decoding استفاده می‌‌شود. هیچ کلیدی وجود ندارد.

Encryption جهت حفظ محرمانه ماندن داده‌ها استفاده می‌شود، برای رمزگذاری به کلید، الگوریتم رمز نیاز داریم و برای رمزگشایی به داده رمزشده، کلید و الگوریتم نیاز داریم.

Hashing جهت حفظ تمامیت و درستی داده مورد استفاده قرار می‌گیرد. تغییر کوچکی در داده، تغییر بزرگی در هش آن داده ایجاد می‌کند.

نظرات

نظر (به‌وسیله فیس‌بوک)