در جاوا اسکریپت امکان استفاده از مبنای ۶۴ یا Base64 برای انکد و دیکد رشته‌ها وجود دارد. در این مطلب، با توابع btoa و atob در جاوا اسکریپت آشنا خواهیم شد؛ توابعی که معمولاً در مرورگرهای وب مدرن در دسترس قرار دارند.

پیش‌نیازها

برای دنبال کردن مراحل این آموزش به موارد زیر احتیاج خواهید داشت.

  • درک مناسب از رشته‌ها در جاوا اسکریپت. در این رابطه می‌توانید مطالب بیشتری را در این زمینه مطالعه کنید.
  • درک مناسب از کاربرد توابع برای Window یا WorkerGlobalScope.
  • درک مناسب از Developer Console جاوا اسکریپت.

انکد و دیکد رشته‌ها

btoa() و atob() دو تابع هلپر مبنای ۶۴ هستند که هسته اصلی مشخصات در HTML به شمار می‌روند و در اکثر مرورگرهای مدرن می‌توان از آنها استفاده کرد.

نکته: عنوان این توابع در واقع، ارجاعی است به فرمان‌های قدیمی یونیکس که برای تبدیل باینری ASCII و ASCII به باینری به کار می‌رفت. با این وجود، ورودی و خروجی هر دوی این توابع به صورت رشته‌های یونیکد خواهند بود.

btoa() یک رشته را گرفته و آن را به مبنای ۶۴ انکد می‌کند.

فرض کنید که یک رشته به صورت “Hello World!” داریم و می‌خواهیم آن را به پایه ۶۴ انکد کنیم. در کنسول توسعه وب مرورگرتان، رشته را تعریف کنید، سپس آن را انکد کرده و رشته انکد شده را نمایش دهید.


// Define the string

var decodedStringBtoA = 'Hello World!';

// Encode the String

var encodedStringBtoA = btoa(decodedStringBtoA);

console.log(encodedStringBtoA);

خروجی این کد به صورت رشته‌ای کاراکترها شامل حرف و عدد خواهد بود.


SGVsbG8gV29ybGQh

امّا atob() یک رشته را می‌گیرد و از مبنای ۶۴ آن را دیکود می‌کند.

در اینجا رشته انکد شده قبلی یا ‘SGVsbG8gV29ybGQh’ را درنظر می‌گیریم و آن از پایه ۶۴ دیکد می‌کنیم. در کنسول توسعه وب مرورگر، رشته را تعریف می‌کنیم. سپس دیکد را انجام  و رشته دیکد شده را نمایش می‌دهیم.


// Define the string

var encodedStringAtoB = 'SGVsbG8gV29ybGQh';

// Decode the String

var decodedStringAtoB = atob(encodedStringAtoB);

console.log(decodedStringAtoB);

خروجی این کد نشان می‌دهد که رشته تبدیل به پیام اولیه خود شده است.


Hello World!

حالا دو ابزار برای انکد و دیکود رشته‌های  مبنای ۶۴ در اختیار دارید.

بررسی کاربردهای رایج مبنای ۶۴

می‌توانید از پایه ۶۴ برای ارائه داده‌های باینری به صورت سازگار با اچتمل، جاوا اسکریپت و CSS استفاده کنید. به عنوان مثال، می‌توانید یک تصویر را به صورت خطی در فایل CSS یا جاوا اسکریپت با استفاده از مبنای ۶۴ تعبیه کنید.

امکان استفاده از پایه ۶۴ برای تبدیل ورودی‌هایی مانند داده یا JSON به یک رشته با تعداد کاراکترهای کمتر و امنیت بیشتر در آدرس صفحات اینترنتی وجود دارد. با این وجود، با توجه به اینکه برخی سرور‌ها برداشت متفاوتی از علامت‌های + و / دارند، توصیه می‌شود که به جای آ‌ن، از encodeURIComponent برای این منظور استفاده کنید.

درک محدودیت‌های مبنای ۶۴

پایه ۶۴ مطمئناً روش امنی برای رمزنگاری نخواهد بود. همچنین این مبنا روشی برای  فشرده‌سازی نیست. انکد کردن یک رشته به مبنای ۶۴ باعث می‌شود که نتیجه ۳۳ درصد طولانی‌تر شود.

جمع‌بندی

در این آموزش، با توابع btoa و atob برای انکد و دیکد کردن رشته‌های مبنای ۶۴ آشنا شدیم. در صورتی که به مطالب مربوط به جاوا اسکریپت علاقه‌مند هستند، حتماً مطالب ما را در این زمینه دنبال کنید.