ToolDeck

رمزگذار فایل به Base64

رمزگذاری هر فایلی به Base64: PDF، ZIP، تصاویر و بیشتر

هر فایلی را اینجا رها کنید یا برای آپلود کلیک کنید

هر نوع فایل: PDF، ZIP، تصاویر، فایل‌های باینری

رمزگذاری فایل به Base64 چیست؟

رمزگذاری فایل به Base64 فایل‌های باینری — PDF، ZIP، تصاویر، فایل‌های اجرایی، فونت‌ها، صدا — را با استفاده از الفبای تعریف‌شده در RFC 4648 به متن ASCII تبدیل می‌کند. هر سه بایت از ورودی باینری به چهار کاراکتر Base64 تبدیل می‌شود و یک نمایش متنی ایجاد می‌کند که می‌تواند از طریق کانال‌هایی که صرفاً برای متن طراحی شده‌اند منتقل شود: بارهای JSON API، اسناد XML، متن ایمیل، ویژگی‌های HTML و متغیرهای محیطی.

بر خلاف رمزگذاری متن به Base64 (که روی رشته‌ها عمل می‌کند)، رمزگذاری فایل به Base64 جریان خام بایت‌های هر فایل را صرف‌نظر از فرمت آن می‌خواند. هدرهای باینری PDF، بلوک‌های فشرده ZIP، و داده‌های پیکسل PNG همگی یکسان در نظر گرفته می‌شوند: به عنوان دنباله‌ای از اکتت‌ها برای رمزگذاری مجدد. نتیجه همیشه ASCII معتبر است و می‌توان آن را در هر جایی که کاراکترهای قابل چاپ را می‌پذیرد جاسازی کرد.

مبادله در اندازه است: خروجی Base64 تقریباً ۳۳٪ بزرگ‌تر از باینری اصلی است. برای یک PDF به حجم ۱ مگابایت، این به معنای تقریباً ۱.۳۳ مگابایت متن Base64 است. این سربار هزینه نمایش بایت‌های ۸ بیتی با کاراکترهای ۶ بیتی است و ذاتی رمزگذاری است — هیچ پیاده‌سازی نمی‌تواند از آن اجتناب کند. با این حال، رمزگذاری فایل به Base64 روش استاندارد جاسازی داده‌های باینری در فرمت‌های تنها متن باقی می‌ماند، که در MIME (RFC 2045)، data URIها (RFC 2397) و JSON Web Tokenها (RFC 7519) مشخص شده است.

چرا از این رمزگذار فایل Base64 استفاده کنیم؟

این ابزار فایل‌ها را مستقیماً در مرورگر شما با استفاده از FileReader API به Base64 رمزگذاری می‌کند. هیچ فایلی به سرور ارسال نمی‌شود — کل تبدیل در سمت کاربر در JavaScript انجام می‌شود.

🛡
پردازش با اولویت حریم خصوصی
فایل شما هرگز دستگاه شما را ترک نمی‌کند. FileReader API فایل را به صورت محلی در حافظه می‌خواند و خروجی Base64 کاملاً در مرورگر تولید می‌شود. هیچ درخواست شبکه‌ای ارسال نمی‌شود.
کشیدن و رها کردن فوری
هر فایلی را روی ابزار رها کنید و خروجی Base64 را فوری ببینید. بدون انتظار برای آپلود، بدون نوار پیشرفت، بدون محدودیت حجم فایل از سمت سرور.
📁
هر فرمت فایلی
PDF، ZIP، تصاویر، فونت‌ها، فایل‌های صوتی، ماژول‌های WebAssembly، یا هر فرمت باینری دیگری را رمزگذاری کنید. رمزگذار تمام فایل‌ها را به عنوان جریان خام بایت در نظر می‌گیرد — فرمت اهمیتی ندارد.
🔒
بدون نیاز به حساب کاربری
بدون ثبت‌نام، ورود به سیستم، یا پذیرش کوکی فوری از ابزار استفاده کنید. خروجی آماده کپی یا دانلود به عنوان یک فایل .b64.txt با یک کلیک است.

موارد استفاده از رمزگذاری فایل به Base64

توسعه‌دهنده فرانت‌اند
آیکون‌های کوچک، فونت‌ها، یا SVGها را مستقیماً در CSS یا HTML به عنوان data URI جاسازی کنید تا درخواست‌های HTTP اضافی حذف شوند. یک آیکون ۲ کیلوبایتی که به عنوان Base64 درون‌خطی شده یک رفت و برگشت شبکه را که ۵۰ تا ۲۰۰ میلی‌ثانیه تأخیر اضافه می‌کند، ذخیره می‌کند.
مهندس بک‌اند
پیوست‌های فایل را در بارهای JSON API هنگامی که پروتکل انتقال از آپلودهای multipart پشتیبانی نمی‌کند قرار دهید. PDF، گزارش‌ها، یا اسناد امضاشده را قبل از ارسال به عنوان فیلدهای رشته‌ای در پاسخ‌های REST یا GraphQL رمزگذاری کنید.
DevOps / زیرساخت
فایل‌های پیکربندی باینری (گواهی‌های TLS، کلیدهای SSH، فایل‌های مجوز) را به عنوان رشته‌های Base64 در متغیرهای محیطی، Secrets کوبرنتیز، یا tfvars ترافورم ذخیره کنید که در آن‌ها مقادیر باینری خام مجاز نیستند.
مهندس تضمین کیفیت / تست
فیکسچرهای فایل Base64 برای تست‌های خودکار تولید کنید که اندپوینت‌های آپلود، مدیریت پیوست ایمیل، یا پردازش اسناد را بدون مدیریت فایل‌های تست باینری در کنترل نسخه بررسی می‌کنند.
مهندس داده
بلوب‌های باینری (متادیتای Parquet، طرح‌واره‌های Protobuf، دارایی‌های باینری کوچک) را در Base64 برای ذخیره‌سازی در کاتالوگ‌های داده مبتنی بر JSON، فروشگاه‌های پیکربندی، یا اسکریپت‌های مهاجرت سریال‌سازی کنید.
دانشجو / یادگیرنده
با رمزگذاری فایل‌های کوچک و بررسی خروجی مشاهده کنید که فایل‌های باینری چگونه به متن تبدیل می‌شوند. طول Base64 را با اندازه فایل اصلی مقایسه کنید تا سربار ۳۳٪ توصیف‌شده در RFC 4648 را تأیید کنید.

سربار اندازه فایل Base64

رمزگذاری Base64 اندازه داده را دقیقاً یک سوم افزایش می‌دهد. هر ۳ بایت ورودی ۴ کاراکتر خروجی تولید می‌کند (هر کدام ۶ بیت را نمایش می‌دهد). کاراکترهای padding (=) هنگامی که طول ورودی مضربی از ۳ نیست اضافه می‌شوند. جدول زیر رابطه بین اندازه فایل اصلی و اندازه خروجی رمزگذاری‌شده را نشان می‌دهد.

اندازه فایلبایت‌های خامبایت‌های Base64سربار
1 KB1,024 B1,368 B+33.3%
10 KB10,240 B13,656 B+33.4%
100 KB102,400 B136,536 B+33.3%
1 MB1,048,576 B1,398,104 B+33.3%
5 MB5,242,880 B6,990,508 B+33.3%
10 MB10,485,760 B13,981,016 B+33.3%

مرجع Data URI و نوع MIME

یک data URI محتوای فایل را مستقیماً در HTML، CSS، یا JavaScript با استفاده از فرمت data:[MIME type];base64,[encoded data] جاسازی می‌کند. نوع MIME به مرورگر می‌گوید که چگونه بایت‌های رمزگشایی‌شده را تفسیر کند. در زیر پسوندهای فایل رایج، نوع MIME آن‌ها، و پیشوند data URI مربوطه آمده است.

پسوندنوع MIMEپیشوند Data URI
.pdfapplication/pdfdata:application/pdf;base64,...
.zipapplication/zipdata:application/zip;base64,...
.pngimage/pngdata:image/png;base64,...
.jpgimage/jpegdata:image/jpeg;base64,...
.gifimage/gifdata:image/gif;base64,...
.svgimage/svg+xmldata:image/svg+xml;base64,...
.woff2font/woff2data:font/woff2;base64,...
.mp3audio/mpegdata:audio/mpeg;base64,...
.wasmapplication/wasmdata:application/wasm;base64,...
.binapplication/octet-streamdata:application/octet-stream;base64,...

نمونه‌های کد

این نمونه‌های قابل اجرا نحوه خواندن یک فایل باینری و رمزگذاری آن به Base64 در JavaScript، Python، Node.js، bash، و Go را نشان می‌دهند. هر قطعه کد Base64 استاندارد (RFC 4648 بخش ۴) با padding تولید می‌کند.

JavaScript (browser)
// Read a file from an <input> element and encode to Base64
const input = document.querySelector('input[type="file"]')
input.addEventListener('change', (e) => {
  const file = e.target.files[0]
  const reader = new FileReader()
  reader.onload = () => {
    const base64 = reader.result.split(',')[1]
    console.log(base64) // → "JVBERi0xLjQK..." (raw Base64, no data URI prefix)
  }
  reader.readAsDataURL(file)
})

// Convert a Blob to Base64 with async/await
async function blobToBase64(blob) {
  const buffer = await blob.arrayBuffer()
  const bytes = new Uint8Array(buffer)
  let binary = ''
  bytes.forEach(b => binary += String.fromCharCode(b))
  return btoa(binary) // → standard Base64 string
}
Python
import base64
from pathlib import Path

# Encode a file to Base64
file_bytes = Path('document.pdf').read_bytes()
encoded = base64.b64encode(file_bytes).decode('ascii')
print(encoded[:40])  # → "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PA..."

# Write encoded output to a text file
Path('document.b64.txt').write_text(encoded)

# Build a data URI from a file
mime_type = 'application/pdf'
data_uri = f'data:{mime_type};base64,{encoded}'
print(data_uri[:60])  # → "data:application/pdf;base64,JVBERi0xLj..."
Node.js
import { readFileSync, writeFileSync } from 'fs'

// Encode a file to Base64
const buffer = readFileSync('archive.zip')
const base64 = buffer.toString('base64')
console.log(base64.length) // → 1398104 (for a ~1 MB file)

// Save Base64 output to a file
writeFileSync('archive.b64.txt', base64)

// Build a data URI
const mime = 'application/zip'
const dataUri = `data:${mime};base64,${base64}`
CLI (bash)
# Encode a file to Base64 (macOS / Linux)
base64 < document.pdf > document.b64.txt

# Encode with no line wrapping (GNU coreutils)
base64 -w 0 < document.pdf > document.b64.txt

# Encode and copy to clipboard (macOS)
base64 < image.png | pbcopy

# Encode with OpenSSL (available everywhere)
openssl base64 -in archive.zip -out archive.b64.txt

# Pipe directly into curl for API upload
base64 -w 0 < photo.jpg | curl -X POST -d @- https://api.example.com/upload
Go
package main

import (
	"encoding/base64"
	"fmt"
	"os"
)

func main() {
	data, err := os.ReadFile("document.pdf")
	if err != nil {
		panic(err)
	}
	encoded := base64.StdEncoding.EncodeToString(data)
	fmt.Println(len(encoded)) // → 1398104 (for a ~1 MB file)

	// Write to file
	os.WriteFile("document.b64.txt", []byte(encoded), 0644)
}

سوالات متداول

حداکثر اندازه فایلی که می‌توانم به Base64 رمزگذاری کنم چقدر است؟
این ابزار کاملاً در مرورگر شما اجرا می‌شود، بنابراین محدودیت به حافظه موجود بستگی دارد. مرورگرهای مدرن فایل‌های تا ۵۰ تا ۱۰۰ مگابایت را بدون مشکل مدیریت می‌کنند. برای فایل‌های بزرگ‌تر از آن، از یک ابزار خط فرمان مانند base64 (macOS/Linux) یا ماژول base64 پایتون استفاده کنید که فایل را در قطعه‌ها پردازش می‌کنند و کل خروجی را به یکباره در حافظه بارگذاری نمی‌کنند.
خروجی Base64 نسبت به فایل اصلی چقدر بزرگ‌تر است؟
خروجی Base64 همیشه تقریباً ۳۳.۳٪ بزرگ‌تر از ورودی است. به طور خاص، فرمول ceil(n / 3) * 4 است که n تعداد بایت‌های ورودی است. یک فایل ۱ مگابایتی تقریباً ۱.۳۳ مگابایت متن Base64 تولید می‌کند. این سربار ذاتی رمزگذاری است و نمی‌توان آن را کاهش داد.
آیا می‌توانم یک فایل را به Base64 رمزگذاری کنم و از آن به عنوان data URI استفاده کنم؟
بله. پیشوند نوع MIME را به رشته Base64 اضافه کنید: data:application/pdf;base64, و سپس محتوای رمزگذاری‌شده را وارد کنید. مرورگرها data URI را رمزگشایی و نمایش می‌دهند گویی یک فایل معمولی است. Data URIها در img src، link href، CSS url()، و ویژگی‌های anchor download کار می‌کنند.
آیا رمزگذاری فایل به Base64 همان رمزنگاری است؟
خیر. Base64 یک رمزگذاری است، نه رمزنگاری. داده‌های باینری را به یک نمایش متنی تبدیل می‌کند که به سادگی قابل معکوس کردن است — هر کسی با یک رمزگشای Base64 می‌تواند فایل اصلی را بازیابی کند. Base64 هیچ محرمانگی، یکپارچگی، یا احراز هویتی ارائه نمی‌دهد. اگر نیاز به محافظت از محتوای فایل دارید، ابتدا فایل را رمزنگاری کنید (مثلاً با AES-256-GCM)، سپس متن رمزشده را برای انتقال Base64 کنید.
چرا رشته Base64 من با یک یا دو کاراکتر = ختم می‌شود؟
کاراکترهای = padding هستند. Base64 ورودی را در گروه‌های ۳ بایتی پردازش می‌کند و ۴ کاراکتر خروجی به ازای هر گروه تولید می‌کند. هنگامی که اندازه فایل مضربی از ۳ نیست، یک یا دو کاراکتر padding اضافه می‌شود تا طول خروجی همیشه مضربی از ۴ باشد. یک = به این معنی است که آخرین گروه ۲ بایت داشت؛ دو == به این معنی است که آخرین گروه ۱ بایت داشت.
چگونه می‌توانم یک فایل را از خط فرمان به Base64 رمزگذاری کنم؟
در macOS و Linux، از دستور base64 استفاده کنید: base64 < file.pdf > file.b64.txt. در GNU/Linux، برای جلوگیری از شکستن خطوط -w 0 را اضافه کنید. همچنین می‌توانید از OpenSSL استفاده کنید: openssl base64 -in file.pdf -out file.b64.txt. در Windows PowerShell: [Convert]::ToBase64String([IO.File]::ReadAllBytes('file.pdf')).
چه زمانی باید از رمزگذاری فایل به Base64 به جای multipart/form-data استفاده کنم؟
از Base64 استفاده کنید هنگامی که انتقال نیازمند فرمت تنها متن است — JSON APIها، XML-RPC، متغیرهای محیطی، یا Secrets کوبرنتیز. از multipart/form-data هنگام آپلود فایل‌ها از طریق فرم‌های HTML یا اندپوینت‌های REST که از جریان‌های باینری پشتیبانی می‌کنند استفاده کنید. Multipart کارآمدتر است زیرا از سربار ۳۳٪ اندازه اجتناب می‌کند، اما نیاز دارد سرور مرزهای multipart را تجزیه کند.