مشفر / مفكك تشفير Base64
يواجه المطورون يومياً مهام ترميز Base64 وفك ترميزه، وتعتمد عليها URI بيانات الصور وحمولات API ومرفقات الملفات كلها. وغالباً ما يؤدي تنفيذ ذلك يدوياً، أو باستخدام أداة غير موثوقة، إلى حشو تالف أو ملفات معطوبة أو مخرجات غير مفهومة. حرف واحد خاطئ داخل السلسلة المشفرة قد يفسد الحمولة بالكامل. وتتبع هذا الخطأ يستهلك وقتاً كان يمكن أن يذهب إلى الإطلاق والإنجاز.
يتعامل هذا المشفر والمفكك المجاني لـ Base64 مع النصوص والملفات والصور مباشرة داخل متصفحك. لا يوجد رفع إلى خادم، ولا حاجة إلى التسجيل، ولا تغادر أي بيانات جهازك إطلاقاً. بدّل فوراً بين التشفير وفك التشفير، وفعّل الوضع الآمن لعناوين URL أو التفاف MIME للأسطر، وتحقق من أي سلسلة Base64 باستخدام المدقق المدمج. مهما كان ما تبنيه، فإن هذا المحول يمنحك المخرجات الصحيحة من أول مرة.
تحويل Base64
ما هو ترميز Base64؟
ترميز Base64 هو مخطط لتحويل البيانات الثنائية إلى نص، حيث يحول البيانات الثنائية إلى 64 حرف ASCII قابلاً للطباعة. فالبايتات الخام والصور والملفات ومفاتيح التشفير، أي شيء تقريباً، تتحول إلى سلسلة نصية مكوّنة من A-Z وa-z و0-9 بالإضافة إلى "+" و"/". وقد ترى هذا المصطلح أيضاً باسم base 64 encoding. كما يُشار إلى الأداة نفسها كثيراً باسم مشفر base 64 أو مفكك base 64.
يعكس فك ترميز Base64 العملية ويحوّل تلك السلسلة النصية مرة أخرى إلى البايتات الأصلية نفسها تماماً. وتبقى البيانات المشفرة بهذه الطريقة سليمة أثناء النقل، وهي الميزة التي جعلت Base64 معياراً لمرفقات البريد الإلكتروني وحمولات HTTP. وهذه القابلية للعكس هي أيضاً السبب الدقيق في أن Base64 ليس تشفيراً، وهو فرق نشرحه بالتفصيل لاحقاً في هذا الدليل.
كيف يعمل ترميز Base64
يعمل Base64 من خلال تجميع بيانات الإدخال في كتل من 3 بايتات (24 بت)، ثم إعادة تقسيم كل كتلة إلى أربع مجموعات من 6 بتات. وتحمل كل مجموعة 6 بت قيمة من 0 إلى 63، تُطابق مباشرة أحد الأحرف الأربعة والستين في أبجدية Base64. وعندما تحتوي الكتلة الأخيرة على أقل من 3 بايتات، يملأ الحشو "=" الفراغ. وبذلك يبقى طول المخرجات مضاعفاً للعدد 4.
إليك مثالاً عملياً: ترميز الكلمة "Cat" بصيغة ASCII. تُعاد تعبئة الـ 24 بت في أربع قيم من 6 بتات، ثم تُطابق مع أحرف Base64. يوضح الجدول أدناه التحويل الكامل، بايتاً بايتاً، حتى ترى كيف تعمل العملية بالضبط.
العنصر | C | a | t |
|---|---|---|---|
| قيمة ASCII | 67 | 97 | 116 |
| ثنائي 8 بت | 01000011 | 01100001 | 01110100 |
| أعيد تقسيمه إلى أربع مجموعات من 6 بتات | 010000 | 110110 | 000101 / 110100 |
| القيمة العشرية | 16 | 54 | 5 / 52 |
| حرف Base64 | Q | 2 | F / 0 |
النتيجة:Cat→Q2F0
كل 3 بايتات من الإدخال تتحول بالضبط إلى 4 أحرف Base64. ولهذا تكون مخرجات Base64 دائماً أكبر بحوالي 33% من البيانات الأصلية. وهذه العملية محددة رسمياً في RFC 4648، وهو معيار الإنترنت الذي يغطي كلاً من Base64 وBase64URL. وهذه الزيادة هي الثمن مقابل التوافق المضمون؛ كما أن MIME يحد أسطر Base64 إلى 76 حرفاً في أنظمة البريد الإلكتروني.
كيفية استخدام هذا المشفر/مفكك Base64
صُمم هذا المشفر والمفكك Base64 ليكون سريعاً: لا حاجة إلى إنشاء حساب ولا تثبيت أي برنامج. تغطي أربعة تبويبات جميع الاستخدامات: النص والملف والصورة ومدقق Base64 لفحص السلسلة قبل فكها. تتم كل المعالجة محلياً داخل متصفحك، ما يعني أن بياناتك لا تلمس أي خادم.
- اختر تبويباً: نص للسلاسل النصية، ملف للملفات الثنائية (ترميز أو فك)، صورة لملفات PNG/JPEG/GIF/SVG/WebP، أو مدقق Base64 للتحقق من صحة السلسلة.
- في تبويبي النص والصورة، اختر تشفير أو فك التشفير باستخدام أزرار الاختيار.
- الصق النص أو سلسلة Base64 في مربع الإدخال، أو اسحب وأفلت ملفاً أو صورة في منطقة الرفع.
- فعّل آمن لعناوين URL (Base64URL) للرموز وعناوين URL، أو التفاف MIME كل 76 حرفاً لإخراج البريد الإلكتروني (في تبويبي النص والملف).
- اضغط على تشفير أو فك التشفير أو تحقق لتظهر النتيجة أو المعاينة أو حالة التحقق فوراً.
بمجرد الضغط على تشفير أو فك التشفير، يتحدث مربع الإخراج فوراً بالنتيجة. ويتكون النص المشفر دائماً من A-Z وa-z و0-9 بالإضافة إلى "+" و"/" وحشو "=". وإذا رأيت أحرفاً أخرى، فالإدخال لم يكن Base64 صالحاً؛ استخدم تبويب المدقق للتأكد قبل فك التشفير. كما أن إعادة التحويل إلى نص مقروء، أي التحويل من base64 إلى text، تعمل بالطريقة نفسها: الصق ثم اضغط على فك التشفير ثم انسخ.
أمثلة عملية
لا توضح الأمثلة العامة المكوّنة من كلمة واحدة كيف يتصرف ترميز Base64 وفكه مع إدخالات من العالم الحقيقي. يستعرض الجدول أدناه خمسة سيناريوهات شائعة، من سلسلة قصيرة إلى مقطع رمز آمن لعناوين URL. وستعرف تماماً ما يمكن توقعه من بياناتك. جميع الأمثلة التالية تستخدم أبجدية Base64 القياسية مع إدخال UTF-8، وهو الوضع الافتراضي في هذه الأداة.
السيناريو | الإدخال | مخرج Base64 |
|---|---|---|
| نص بسيط | Hello | SGVsbG8= |
| حمولة JSON | {"id":1} | eyJpZCI6MX0= |
| أحرف خاصة / لهجات | café! | Y2Fmw6kh |
| مقطع رمز آمن لعناوين URL (Base64URL بدون حشو) | {"sub":"123"} | eyJzdWIiOiIxMjMifQ |
| صورة (PNG، مختصرة للعرض) | بايتات PNG ثنائية | data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA... |
لاحظ أن المثال الآمن لعناوين URL يستخدم ترميز Base64URL من دون حشو "="، بينما يستخدم مثال JSON Base64 القياسي مع بقاء الحشو. يستبدل Base64URL الحرف "+" بـ "-" والحرف "/" بـ "_" لهذا السبب بالضبط. فهو ينتقل بأمان داخل عناوين URL وملفات تعريف الارتباط ورؤوس HTTP، حيث يمكن أن يسبب "+" و"/" مشاكل. ولهذا تستخدم رموز المصادقة ومعرفات الجلسات وغيرها من البيانات المضمّنة داخل URL النسخة الآمنة لعناوين URL في الغالب.
تحويل Base64 إلى صورة وصورة إلى Base64
الصور من أكثر استخدامات Base64 شيوعاً. إذ يقوم المطورون بترميزها في Base64 لتضمينها مباشرة داخل CSS أو HTML أو JSON من دون طلب ملف منفصل. ارفع صورة للحصول على URI بيانات Base64، أو الصق سلسلة Base64 لتنزيل النتيجة بعد فكها. التنسيقات المدعومة هي PNG وJPEG وGIF وSVG وWebP.
ينتج عن تحويل الصورة إلى Base64 URI بيانات مثل data:image/png;base64,iVBORw0KGgo... يمكن وضعه مباشرة داخل سمة src أو داخل خاصية CSS background-image. أما تحويل Base64 إلى صورة فيعمل بالعكس. الصق السلسلة المشفرة، وستقوم الأداة بفكها وعرض معاينة فورية وتوفير تنزيل بنقرة واحدة. ويكون هذا المسار ذهاباً وإياباً مفيداً جداً عندما تعيد استجابة API بيانات الصورة كسلسلة Base64 بدلاً من ملف ثنائي.
Base64 في الكود: JavaScript وPython وGo
لا يحتاج معظم المطورين إلى تحويل لمرة واحدة فقط؛ بل يحتاجون إلى تكرار منطق Base64 نفسه داخل تطبيقاتهم. تغطي المقاطع أدناه اللغات الثلاث الأكثر شيوعاً لترميز النصوص وفكها. ويستخدم كل مثال "Hello, world!"، مع مخرج يطابق ما تنتجه هذه الأداة.
JavaScript (المتصفح)
// Encode
const encoded = btoa("Hello, world!");
console.log(encoded); // SGVsbG8sIHdvcmxkIQ==
// Decode
const decoded = atob(encoded);
console.log(decoded); // Hello, world!Python
import base64
encoded = base64.b64encode(b"Hello, world!")
print(encoded.decode()) # SGVsbG8sIHdvcmxkIQ==
decoded = base64.b64decode(encoded)
print(decoded.decode()) # Hello, world!Go
package main
import (
"encoding/base64"
"fmt"
)
func main() {
encoded := base64.StdEncoding.EncodeToString([]byte("Hello, world!"))
fmt.Println(encoded) // SGVsbG8sIHdvcmxkIQ==
decoded, _ := base64.StdEncoding.DecodeString(encoded)
fmt.Println(string(decoded)) // Hello, world!
}يعتمد ترميز Base64 وفكه في JavaScript على btoa() وatob()، وهما متاحان أصلاً في كل متصفح. لكنهما يتعاملان جيداً فقط مع نص Latin1؛ وللحصول على دعم UTF-8 كامل، مثل الإيموجي أو الأحرف ذات اللكنات، قم أولاً بالترميز باستخدام TextEncoder. وفي Node.js استخدم Buffer.from(str).toString('base64') للترميز وBuffer.from(b64, 'base64').toString() للفك. أما Python وGo فيستخدمان المكتبات القياسية ويتعاملان مع UTF-8 بشكل أصلي.
هل Base64 تشفير؟ (الأمان والخصوصية)
لا، Base64 هو ترميز وليس تشفيراً متماثلاً، وهذا الفرق أهم مما يتخيله كثير من المطورين. فالترميز قابل للعكس بالكامل بحكم تصميمه. وأي شخص يملك سلسلة Base64 يمكنه فكها والعودة إلى البيانات الأصلية خلال ثوانٍ، من دون مفتاح أو كلمة مرور. وإذا كنت بحاجة إلى حماية بيانات حساسة، فإن Base64 وحده لا يوفر أي سرية.
وتظهر أهمية ذلك خصوصاً في سياقات المصادقة، حيث تكون رموز الوصول ومعرفات الجلسات غالباً مشفرة بصيغة Base64 لكنها غير مشفرة فعلياً. تعامل مع أي سلسلة Base64 كما تتعامل مع النص العادي. لا تضع فيها أسراراً أو كلمات مرور أو مفاتيح خاصة ما لم تكن مشفرة أولاً. وللحصول على سرية حقيقية، تتولى أداة تشفير / فك تشفير AES لدينا تنفيذ تشفير وفك تشفير AES مباشرة في متصفحك.
أما من ناحية الخصوصية، فهذه الأداة تعمل بالكامل من جهة العميل داخل متصفحك. لا يتم أبداً رفع تحويلات النصوص أو الملفات أو الصور إلى خادم. وتبقى الحمولات الحساسة ورموز API ومحتويات الملفات الداخلية وبيانات الاعتماد التي تقوم بتصحيحها على جهازك طوال الوقت. وإذا كنت تتحقق من تواقيع API أو حمولات webhook، فإن أداة مولد HMAC لدينا تولد مخرجات HMAC-SHA256 يمكنك فحصها هنا.
أخطاء Base64 الشائعة وكيفية إصلاحها
تعود أخطاء Base64 تقريباً دائماً إلى واحدة من هذه المشكلات الثلاث، ولكل منها حل سريع. يساعدك التعرف على النمط في تجنب إعادة فحص كامل الإدخال عندما تكون المشكلة بسيطة.
الخطأ | السبب | الإصلاح |
|---|---|---|
| "حرف غير صالح" | يحتوي الإدخال على أحرف خارج A-Z وa-z و0-9 و+ و/ و= | احذف المسافات أو فواصل الأسطر أو علامات الاقتباس الزائدة قبل فك التشفير |
| "حشو غير صحيح" / الطول ليس مضاعفاً للعدد 4 | فُقد أو اقتُطع حرف أو أكثر من أحرف "=" النهائية | أضف "=" حتى يصبح طول السلسلة مضاعفاً للعدد 4 |
| المخرجات المفكوكة نص غير مفهوم | تم اختيار مجموعة المحارف الخاطئة، أو أن السلسلة تستخدم Base64URL بدلاً من Base64 القياسي | بدّل مجموعة المحارف إلى UTF-8، أو استبدل "-"/"_" بـ "+"/"/" قبل فك التشفير |
إذا كانت السلسلة قادمة من URL أو ملف تعريف ارتباط أو رمز مصادقة، فمن شبه المؤكد أنها Base64URL وليست Base64 قياسية. وهذا هو المقصود بسطر “مجموعة المحارف الخاطئة” أعلاه. تكشف هذه الأداة تلقائياً كلتا الصيغتين، لذا فإن لصق مقطع رمز أو سلسلة آمنة لعناوين URL يتم فكه بشكل صحيح من دون تحويل يدوي. وإذا لم تكن متأكداً أصلاً من صلاحية السلسلة، فسيخبرك تبويب مدقق Base64 بذلك فوراً.
Base64 مقارنة بالترميزات الأخرى
ليس Base64 هو مخطط التحويل الثنائي إلى نص الوحيد، واختيار المخطط المناسب يعتمد على المكان الذي ستذهب إليه المخرجات. يقارن الجدول أدناه Base64 مع الترميزين اللذين يختلطان به أكثر من غيرهما عند المطورين.
الترميز | مجموعة المحارف | الزيادة في الحجم | الأفضل لـ |
|---|---|---|---|
| Base64 | 64 حرفاً (A-Z وa-z و0-9 و+ و/) | أكبر بحوالي 33% | JSON وXML والبريد الإلكتروني (MIME) وURI البيانات |
| Base64URL | 64 حرفاً (A-Z وa-z و0-9 و- و_) | أكبر بحوالي 33% | عناوين URL وملفات تعريف الارتباط ورموز المصادقة ورؤوس HTTP |
| سداسي عشري | 16 حرفاً (0-9 وA-F) | أكبر بنسبة 100% | الهاشات وقيم التحقق وتصحيح المستوى المنخفض |
| ترميز URL (percent-encoding) | ASCII + تسلسلات "%XX" | يختلف حسب المحتوى | سلاسل الاستعلام وبيانات النماذج |
يكون Hex أسهل قراءةً للهاشات القصيرة، لكنه يضاعف حجم المخرجات، ما يجعله غير عملي للملفات الكبيرة. أما ترميز URL القياسي فهو مخصص لسلاسل الاستعلام لا للبيانات الثنائية. ولهذا أصبح Base64، وخصوصاً Base64URL، الخيار الافتراضي لأي بيانات ثنائية تحتاج إلى المرور عبر URL. وإذا كنت تحتاج إلى percent-encoding لسلاسل الاستعلام، فإن أداة مشفر / مفكك تشفير URL لدينا هي الأنسب؛ أما إذا كنت تحتاج إلى هاشات SHA-256 أو MD5، فإن مولد Hash لدينا يغطي كل الخوارزميات الرئيسية.
الأسئلة الشائعة
أسئلة مكررة