از وقتی که دنیای وب شناخته تر شد و افراد زیادی به سمت برنامه نویسی تحت وب روانه شدن، جنگ بین برنامه نویس ها هم شروع شد. اگر بخوام این جنگ رو به دو جبهه تقسیم کنم، باید بگم که:
سوالی که پیش میاد اینه که اصلا روشی وجود داره که بتونه سورس ما رو 100 درصد ایمن کنه و هیچکس نتونه سورس مارو بخونه یا دیکد کنه؟ جواب این سوال خیلی پیچیدس! حالا چرا؟
چون برای کدگذاری یا انکد کردن سورس ، بی نهایت روش عمومی و خصوصی وجود داره که هر روش از الگوریتم های خاص خودش پیروی میکنه ولی در نهایت سورس توسط وب سرور خونده میشه و از حالت محافظت شده خارج میشه که این مسئله باعث میشه که حتی قوی ترین Encoder ها هم قابل کدگشایی باشن.
چیزی که در بحث کدگذاری مهمه، پیچیدگی الگوریتم و پروسه ی انکد هستش که زمان دیکد شدن رو به تعویق میندازه.
برای درک بهتر این موضوع بیاید با چند روش کدگذاری آشنا بشیم:
طبق توضیحات سایت php این تابع، یک تابع ساده است که هر مقداری که در حروف الفبا باشد را به 13امین حرف بعدی الفبای انگلیسی تبدیل می کند.(این تابع فقط روی حروف تاثیر دارد و روی اعداد و کاراکترهای خاص عملی انجام نمی دهد)
برای مثال -> کد زیر تمامی حروف را به 13 حرف بعدی تبدیل می کند و با عدد 22 کاری ندارد.
<?php echo str_rot13('Amir Malek 22'); ?>
خروجی ->
Nzve Znyrx 22
حالا چطور میتونیم این مقدار رو دیکد کنیم؟ برای دیکد کردن این مقدار فقط کافیه که دوباره از تابع str_rot13 استفاده کنیم. به صورت زیر:
<?php echo str_rot13('Nzve Znyrx 22'); ?>
طبق توضیحات سایت php با استفاده از این تابع میتونیم کد های خودمون رو با BASE64 انکد کنیم.
اما شیوه ی کدگذاری Base64 به چه شکلی است؟
کلمه ی amir را در نظر بگیرید که متشکل از 4 حرف می باشد. هر حرف یک نمایش باینری 8 بیتی دارد. که در تصویر زیر میتونید ببینید.
در اینجا باید تمام اعداد 8 بیتی رو کنار هم گذاشته و آنها را به گروه های 6 تایی تقسیم کنیم که اعداد بالا به شکل زیر در می آیند.
توجه: اگر عدد برای گروه های شش تایی کم بیاد و گروه آخر تکمیل نشه، باید به تعداد اعدادی که کم اومده صفر اضافه کنیم.
حالا تمام گروه های 6 تایی باینری رو تبدیل به مبنای 10 (دسیمال) میکنیم. طبق شکل زیر:
حالا باید این اعداد رو طبق جدول Base64 ترجمه کنیم و به عبارت کدگذاری شده ی کلمه ی amir برسیم.
بعد از تبدیل اعداد به عبارت YW1pcg میرسیم که معادل انکد شده ی کلمه ی amir می باشد.
استفاده از تابع base64 در کد های php
کدگذاری (encode) یک رشته:
<?php echo base64_encode('amir'); ?>
کدگشایی (decode) یک رشته:
<?php echo base64_decode('YW1pcg'); ?>
تعداد زیادی از این توابع از پیش تعریف شده برای محافظت و ناخوانا کردن سورس های php وجود دارد که در اینجا دوتا از آنها را معرفی کردیم. اگر توابع دیگری میشناسید در بخش کامنت ها معرفی کنید.
موفق باشد :)