مُشفِّر الملفات Base64

تشفير أي ملف إلى Base64: PDF وZIP والصور وأكثر

اسحب أي ملف هنا أو انقر للرفع

أي نوع من الملفات: PDF وZIP والصور والملفات الثنائية

ما هو تشفير الملفات بـ Base64؟

يحوّل تشفير الملفات بـ Base64 الملفات الثنائية — ملفات PDF وZIP والصور والملفات التنفيذية والخطوط والصوت — إلى نص ASCII خالص باستخدام الأبجدية المحددة في RFC 4648. كل ثلاثة بايتات من البيانات الثنائية تتحول إلى أربعة محارف Base64، مما ينتج تمثيلاً نصياً يمكنه العبور عبر القنوات المصممة حصراً للنصوص: حمولات JSON في واجهات API وملفات XML وأجسام البريد الإلكتروني وسمات HTML ومتغيرات البيئة.

على عكس تشفير النصوص بـ Base64 الذي يعمل على السلاسل النصية، يقرأ تشفير الملفات بـ Base64 تدفق البايتات الخام لأي ملف بصرف النظر عن تنسيقه. الترويسات الثنائية لملف PDF والكتل المضغوطة لملف ZIP وبيانات البكسل لملف PNG — كلها تُعالَج بالطريقة ذاتها: كتسلسل من الثمانيات لإعادة ترميزها. والنتيجة دائماً ASCII صالح، آمن للتضمين في أي مكان يقبل المحارف القابلة للطباعة.

المقايضة هي الحجم: مخرجات Base64 أكبر بنحو 33% من الثنائي الأصلي. بالنسبة لملف PDF بحجم 1 ميغابايت، يعني ذلك نحو 1.33 ميغابايت من نص Base64. هذه الزيادة هي ثمن تمثيل البايتات ذات 8 بتات بمحارف ذات 6 بتات، وهي متأصلة في الترميز — لا يمكن لأي تنفيذ تجنبها. على الرغم من ذلك، يظل تشفير الملفات بـ Base64 الأسلوب المعياري لتضمين البيانات الثنائية في التنسيقات النصية فقط، وهو محدد عبر MIME في RFC 2045 وعناوين URI للبيانات في RFC 2397 ورموز JSON Web Token في RFC 7519.

لماذا تستخدم مشفر الملفات Base64 هذا؟

تُشفِّر هذه الأداة الملفات إلى Base64 مباشرةً في متصفحك باستخدام FileReader API. لا يُرفع أي ملف إلى خادم — يتم التحويل بالكامل من جهة العميل في JavaScript.

🛡
المعالجة بأولوية الخصوصية
ملفك لا يغادر جهازك قط. يقرأ FileReader API الملف في الذاكرة محلياً، ويُولَّد إخراج Base64 كلياً في المتصفح. لا يُجرى أي طلب شبكة.
سحب وإفلات فوري
أفلت أي ملف على الأداة وشاهد مخرجات Base64 فوراً. لا انتظار للرفع، ولا أشرطة تقدم، ولا حدود لحجم الملف يفرضها خادم.
📁
أي تنسيق ملف
شفِّر ملفات PDF وZIP والصور والخطوط والملفات الصوتية ووحدات WebAssembly وأي تنسيق ثنائي آخر. يعامل المشفر جميع الملفات كتدفقات بايتات خام — التنسيق لا يهم.
🔒
لا حساب مطلوب
استخدم الأداة فوراً دون تسجيل أو تسجيل دخول أو قبول ملفات تعريف الارتباط. المخرجات جاهزة للنسخ أو التنزيل كملف .b64.txt بنقرة واحدة.

حالات استخدام تشفير الملفات بـ Base64

مطور واجهات أمامية
ضمِّن الأيقونات الصغيرة والخطوط أو SVG مباشرةً في CSS أو HTML كعناوين URI للبيانات لتجنب طلبات HTTP الإضافية. أيقونة بحجم 2 كيلوبايت مضمّنة كـ Base64 توفر رحلة شبكة كاملة قد تضيف 50-200 ميلي ثانية من زمن الاستجابة.
مهندس خلفيات
أدرج مرفقات الملفات في حمولات JSON لواجهات API عندما لا يدعم بروتوكول النقل رفع الملفات المتعددة. شفِّر ملفات PDF والتقارير والمستندات الموقَّعة قبل إرسالها كحقول نصية في استجابات REST أو GraphQL.
DevOps / البنية التحتية
خزِّن ملفات الإعداد الثنائية (شهادات TLS ومفاتيح SSH وملفات الترخيص) كسلاسل Base64 في متغيرات البيئة أو Kubernetes Secrets أو Terraform tfvars حيث القيم الثنائية الخام غير مسموح بها.
مهندس ضمان الجودة / الاختبار
أنشئ بيانات اختبار Base64 للاختبارات الآلية التي تتحقق من نقاط رفع الملفات ومعالجة مرفقات البريد الإلكتروني أو مسارات معالجة المستندات دون إدارة الملفات الثنائية في نظام التحكم بالإصدار.
مهندس بيانات
احفظ الكتل الثنائية (بيانات تعريف Parquet ومخططات Protobuf والأصول الثنائية الصغيرة) كـ Base64 للتخزين في كتالوجات البيانات القائمة على JSON أو مخازن الإعداد أو سكريبتات الترحيل.
طالب / متعلم
راقب كيف تتحول الملفات الثنائية إلى نص عن طريق تشفير ملفات صغيرة وفحص المخرجات. قارن طول Base64 بحجم الملف الأصلي للتحقق من الزيادة البالغة 33% الموضحة في RFC 4648.

الزيادة في حجم الملف عند التشفير بـ Base64

يزيد تشفير Base64 حجم البيانات بمقدار الثلث تماماً. كل 3 بايتات مدخلة تنتج 4 محارف مخرجة (كل منها يمثل 6 بتات). تُضاف محارف الحشو (=) عندما لا يكون طول المدخل مضاعفاً للعدد 3. يوضح الجدول أدناه العلاقة بين حجم الملف الأصلي وحجم المخرج المُشفَّر.

حجم الملفالبايتات الخامبايتات 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%

مرجع عناوين URI للبيانات وأنواع MIME

يُضمِّن عنوان URI للبيانات محتوى الملف مباشرةً في HTML أو CSS أو JavaScript بالتنسيق data:[نوع MIME];base64,[البيانات المُشفَّرة]. يخبر نوع MIME المتصفح بكيفية تفسير البايتات المُفكَّكة. يوضح الجدول أدناه امتدادات الملفات الشائعة وأنواع MIME الخاصة بها وبادئة عنوان URI للبيانات المقابلة.

الامتدادنوع MIMEبادئة 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 القسم 4) مع الحشو.

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؟
تعمل هذه الأداة بالكامل في متصفحك، لذا يعتمد الحد على الذاكرة المتاحة. تتعامل المتصفحات الحديثة مع الملفات حتى 50-100 ميغابايت دون مشاكل. بالنسبة للملفات الأكبر من ذلك، استخدم أداة سطر أوامر مثل base64 في macOS/Linux أو وحدة base64 في Python، التي تعالج الملف في أجزاء ولا تحمّل المخرج كاملاً في الذاكرة مرة واحدة.
بكم يكبر مخرج Base64 مقارنة بالملف الأصلي؟
مخرج Base64 أكبر دائماً بنحو 33.3% من المدخل. تحديداً، الصيغة هي ceil(n / 3) * 4 حيث n هو عدد بايتات المدخل. ملف بحجم 1 ميغابايت ينتج نحو 1.33 ميغابايت من نص Base64. هذه الزيادة متأصلة في الترميز ولا يمكن تقليلها.
هل يمكنني تشفير ملف إلى Base64 واستخدامه كعنوان URI للبيانات؟
نعم. أضف بادئة نوع MIME إلى سلسلة Base64: data:application/pdf;base64, متبوعة بالمحتوى المُشفَّر. ستُفكِّك المتصفحات عنوان URI للبيانات وتعرضه كما لو كان ملفاً عادياً. تعمل عناوين URI للبيانات في سمات img src وlink href وCSS url() وanchor download.
هل تشفير الملفات بـ Base64 هو نفسه التشفير الأمني؟
لا. Base64 هو ترميز وليس تشفيراً أمنياً. يحوّل البيانات الثنائية إلى تمثيل نصي قابل للعكس بسهولة — يمكن لأي شخص لديه مُفكِّك Base64 استرداد الملف الأصلي. لا يوفر Base64 أي سرية أو سلامة أو مصادقة. إذا كنت بحاجة إلى حماية محتوى الملف، شفِّر الملف أولاً (مثلاً بـ AES-256-GCM)، ثم شفِّر النص المُشفَّر بـ Base64 للنقل.
لماذا تنتهي سلسلة Base64 بمحرف أو محرفين = ؟
محارف = هي حشو. يعالج Base64 المدخل في مجموعات من 3 بايتات، ينتج 4 محارف مخرجة لكل مجموعة. عندما لا يكون حجم الملف مضاعفاً للعدد 3، تُضاف محارف حشو واحدة أو اثنتان لتكون طول المخرج دائماً مضاعفاً للعدد 4. المحرف = الواحد يعني أن المجموعة الأخيرة كانت 2 بايت؛ == يعني أن المجموعة الأخيرة كانت بايت واحد.
كيف أشفِّر ملفاً إلى 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 ومتغيرات البيئة أو Kubernetes Secrets. استخدم multipart/form-data عند رفع الملفات عبر نماذج HTML أو نقاط REST التي تدعم تدفقات البيانات الثنائية. multipart أكثر كفاءة لأنه يتجنب زيادة الحجم بنسبة 33%، لكنه يتطلب من الخادم تحليل حدود multipart.