الگوریتم base64 در php
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 5 دقیقه

الگوریتم base64 در php

همان طور که در مقاله ی الگوریتم های رمز نگاری معروف در پی اچ پی گفته شد، یکی از الگوریتم های رمزنگاری در php الگوریتم base64 می باشد.

base64 نام تابعی از PHP است که کد های پروژه شما را رمزگذاری می کند. دو تابع base64_encode و base64_decode برای کد کردن کد های پروژه های وب مورد استفاده قرار می گیرد. این توابع در نسخه‌های ۴ به بالا زبان php وجود دارد و امکان استفاده از آنها در نسخه های قدیمی امکان پذیر نیست. همان‌ طور که از نام این توابع پیداست، تابع base64_encode برای کد کردن اطلاعات و تابع base64_decode  برای کدگشایی اطلاعات مورد استفاده قرار می گیرد.

نحوه ی کد گذاری اطلاعات: همان‌طور که در ابتدا نیز اشاره شد، برای کد کردن اطلاعات از تابع base64_encode استفاده می‌کنیم. اطلاعات کدشده توسط این تابع، نسبت به اطلاعات اصلی به میزان ۳۳ درصد فضای بیشتری برای ذخیره سازی نیاز دارند. این تابع به صورت زیر تعریف می‌شود:

string base64_encode( string $data );

همان طور که ملاحظه میکنید این تابع یک رشته را دریافت و در خروجی یک رشته کد گذاری شده را که در متغیر $data قرار دارد باز می گرداند.

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

حال بعد از کد گذاری نیاز است که در صورت لزوم به رشته ی اصلی با همان فرم دسترسی داشته باشیم.برای این منظور لازم است اطلاعات کدگذاری شده را بازگشایی کنیم.روش کد گشایی اطلاعات این تابع به صورت زیر است:

نحوه ی کدگشایی اطلاعات:

string base64_decode( string $data [, bool $strict = false ] );

با توجه به پارامتر های این تابع در می یابیم که باید اطلاعات کدگذاری شده را به عنوان پارامتر ورودی به این تابع بدهیم و در خروجی اطلاعات کدگشایی شده را دریافت کنیم. متغیر bool که در تعریف تابع به صورت پارامتر اختیاری قرار دارد، از نسخه ۵٫۲٫۰ زبان php به تعریف این تابع اضافه شده است. کاربرد این متغیر اختیاری به این صورت است که اگر به عنوان ورودی(همراه با اطلاعات کد شده)، متغیری از نوع bool نیز به تابع بدهیم و در اطلاعات کدشده کاراکتری خارج از محدوده الفبای base64 وجود داشته باشد، این متغیر پس از اجرای تابع مقدار false را بر میگرداند.

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

 $str = 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==';

 echo base64_decode($str);

ابتدا متغیری که در آن رشته ی کد گذاری شده بود را تعریف و سپس با استفاده از تابع base64_decode آنرا کد گشایی میکنیم:

This is an encoded string

که عبارت بالا در خروجی چاپ خواهد شد.

حال به یکی از کاربرد های این تابع میپردازیم:

یکی از کاربرد های تابع base64 ،ایحادعکس هایی هست که به صورت inline و به قولی از طریق کار با base64 ساخته میشوند.

تصاویر و برخی محتویات ارائه شده توسط CSS, JS, HTML را می‌توان به صورت آدرس آن درج کرد و مرورگر ها  پس از دریافت این کد، تصویر  و محتویات مربوطه را از آدرسی که تعریف شده است درخواست می‌کنند و در نتیجه تصویر و محتویات مربوط به آن آدرس اجرا میشوند. 

اما علاوه بر این کار(شما میتوانید برای کاهش درخواست از دیتای کد شده ی آن توسط تابع base64 استفاده نمایید)، می‌توانید به جای درج آدرس عکس، دیتای تشکیل دهنده آن عکس را ذکر کنید تا بدون درخواست اضافه(درخواست اضافی سرعت سرور در نتیجه سرعت بارگذاری وب و پورتال تان را کاهش میدهد)، تصویر نمایش داده شود که به این تکنیک Data URI و به این تصاویر Inline image گفته می‌شود . 

به عنوان مثال به کد زیر دقت کنید:

background: white url('data:image/gif;base64,R0lGODlhNAAQAKIHAIQKhNkPNzgQ2fbw97FksRTfFNas1v///yH5BAEAAAcALAAAAAA0ABAAAAPtCAoz8qLBeAZR5ujNuzdAxi2MA0nncS2i53Zgq5HoU0eD0gDE62+NQYdmshUFh5jm0jAMDM4KVPOUPZtQZ1C4rXSVSQaIqFOFOLHcouttUINhEXNMuPRABLxwk1bUA4ABDQWEBTc7BDtiPDMlJDJxahqBggOFhkdCK2tgTGGMMCE5PQeUg4WHFXZzZ2ZcGB+ioKaWqJlXmotyDJ+kaLKkW1xwwmGkCsaNirC/TqBs0MQYFxl0dsZ4qtXAk4ENtCuJZmufa2pCGKORs94DtDQaBnV7MVBcU1JOU7j4tO/kLsD8GFiq3b8yAVsR/JEAADs=') no-repeat scroll left top;

js:

window.open('data:text/html;charset=utf-8,%3C%21DOCTYPE%20' +

  'html%3E%0D%0A%3Chtml%20lang%3D%22en%22%3E%0D%0A%3Chead%' +

  '3E%3Ctitle%3EEmbedded%20Window%3C%2Ftitle%3E%3C%2Fhead%' +

  '3E%0D%0A%3Cbody%3E%3Ch1%3E42%3C%2Fh1%3E%3C%2Fbody%3E%0A' +

  '%3C%2Fhtml%3E%0A%0D%0A','_blank','height=300,width=400');

شما با استفاده از تابع base64 می توانید درخواست های ارسالی به سرور را کاهش دهید.با این روش از بوجود آمدن پیام اخطار https جلوگیری کنید و بار سرور را سبک کنید به علاوه افزودن تصاویر با این روش به ایمیل‌ها، ساده‌تر از ضمیمه کردن آن به عنوان attach به نظر می‌رسد. ولی حجم این طور فایل ها چون خروجی تابع base64 محسوب میشود از فایل اصلی حدود 33 درصد بیشتر است.پس برای تصاویر و محتواهای کم حجم مفید واقع میشود ولی در مواقعی که تصویر بالای 1 مگ حجم دارد این عمل توصیه نمیشود.در ضمن تصاویری که به صورت inline در css درج شده باشند، به دلیل کش شدن css کش می‌شوند اما تصاویری که در سورس صفحه html در تگ IMG قرار داده شده باشند، با این روش کش نمی‌شوند.

برای ایجاد چنین محتوایی یا به صورت مستقیم از تابع base64 استفاده کنید و یا از راه آسان تر یعنی استفاده از سرویس های رایگان و آنلاین جهت ایجاد کد گذاری base64 تصاویر و محتوای آن ، بهره مند شوید.

لینکهای زیر ارائه دهنده ی سرویس آنلاین کدگذاری تصاویر بر مبنای base64 میباشد:

http://www.askapache.com/online-tools/base64-image-converter/

http://dataurl.net/#dataurlmaker

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
در انتظار ثبت رای

/@roocketir

باور ما اینست که کاربران ایرانی لایق بهترین‌ها هستند، از این رو ما تمام تلاش خود را می‌کنیم تا بتوانیم فیلم‌ها و مقالات آموزشی بروز و کاربردی را در اختیارتان قرار دهیم تا با استفاده از آنها بتوانید جزء بهترین‌ها در صنعت طراحی و برنامه‌نویسی وب شوید. ما ادعا نمی‌کنیم که بهترین هستیم ولی همیشه تمام تلاش خود را می‌کنیم بهترین عملکرد را به شما ارائه دهیم.

دیدگاه و پرسش

برای ارسال دیدگاه لازم است وارد شده یا ثبت‌نام کنید ورود یا ثبت‌نام

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

پشتیبانی راکت

مقالات برگزیده

مقالات برگزیده را از این قسمت میتوانید ببینید

مشاهده همه مقالات