ما هو ترميز Base64؟ المثال الأول بالبايتات الحقيقية

افهم الغرض من Base64، وشاهد كيف تتحوّل Hello إلى SGVsbG8=، وتعرّف على الفرق بين الترميز والتشفير.

Base64 هي طريقة لتمثيل البيانات الثنائية بأحرف نصية عادية. يمكن تمثيل الصورة أو المستند أو جزء من النص بالبايت. عندما يحتاج النظام إلى تلك البايتات الموجودة داخل حقل نصي، يوفر Base64 تهجئة قابلة للعكس يمكن للمتلقي فك تشفيرها لاحقًا.

مثال صغير

النص Hello يحتوي على خمسة ASCII بايت. ينتج ترميز تلك البايتات SGVsbG8=. يؤدي فك تشفير هذه القيمة إلى إرجاع نفس البايتات الخمس، والتي يمكن بعد ذلك قراءتها على أنها النص الأصلي. تنتمي علامة التساوي إلى المجموعة النهائية للتشفير؛ أنها ليست جزءا من كلمة مرحبا.

Text:           Hello
Bytes in Hex:   48 65 6c 6c 6f
Base64:         SGVsbG8=
Decoded bytes:  48 65 6c 6c 6f

جرب المثال في برنامج التشفير، وانسخ النتيجة إلى وحدة فك التشفير، وقارن النص الذي تم إرجاعه. ثم جرّب حرفًا صينيًا أو رمزًا تعبيريًا. يجب أن يتحول النص أولاً إلى بايتات باستخدام ترميز أحرف مثل UTF-8؛ Base64 نفسه لا يحدد لغة أو مجموعة أحرف.

حيث تصادفه

تتضمن الأمثلة الشائعة حقلاً ثنائيًا في JSON، وصورة مضمنة في بيانات URI، والأجزاء القابلة للقراءة من رموز معينة. يوفر التنسيق المحيط السياق. لا تخبرك السلسلة Base64 بحد ذاتها باسم الملف الأصلي، أو نوع MIME، أو ترميز الأحرف، أو ما إذا كان المحتوى جديرًا بالثقة.

تضيف البيانات URI بادئة مثل data:image/png;base64,. تصف هذه البادئة الحمولة ولكنها ليست جزءًا من الأبجدية Base64. بعض أجهزة فك التشفير تفهم الغلاف؛ ويتوقع آخرون الجزء الذي يلي الفاصلة فقط. اختر الأداة أو الوضع المناسب بدلاً من حذف الأحرف غير المألوفة بشكل عشوائي.

ثلاثة سوء فهم مشترك

أولاً، Base64 ليس تشفيرًا: ليست هناك حاجة إلى سر لفك تشفيره. ثانياً، لا يجعل الملفات أصغر حجماً؛ يكون الإخراج المبطن العادي أكبر بمقدار الثلث تقريبًا من البايتات الأصلية. ثالثًا، ليست كل نتيجة تم فك تشفيرها عبارة عن نص. قد يتم فك تشفير الصورة بشكل صحيح إلى بايتات تبدو وكأنها هراء في مربع النص.

عند فشل فك التشفير، تحقق من المصدر الأصلي والأبجدية المختارة وما إذا كانت السلسلة مقطوعة. عندما ينجح ذلك، اختر طريقة عرض مناسبة: نص للبايتات النصية الصالحة، أو Hex للفحص، أو تنزيل ملف للبيانات الثنائية. تم تعريف الأبجدية والأمثلة التفصيلية Base64 في RFC 4648.