1️⃣ ما هو تنسيق PEM؟
PEM (البريد المحسّن للخصوصية) هو تنسيق نصي يُستخدم لتخزين ونقل المفاتيح والشهادات. يقوم Base64 بتشفير بيانات DER الثنائية ويغلفها برؤوس وتذييلات مثل-----ابدأ <LABEL>-----و-----النهاية <LABEL>-----. تشمل التسميات الشائعةالمفتاح العام, المفتاح الخاص، والشهادة. من السهل النسخ واللصق والنقل في مسارات عمل نصية، مما يجعلها واحدة من أكثر تنسيقات تبادل المفاتيح شيوعًا.
2️⃣ ما هي التنسيقات الأخرى الشائعة إلى جانب PEM؟
- DER: تنسيق ثنائي خالص يخزن بنيات ASN.1 مباشرة. إنها ليست قابلة للقراءة من قبل الإنسان وهي شائعة في أنظمة Java البيئية.
- HEX: يعبر عن محتوى DER الثنائي كسلسلة سداسية عشرية، وهو مفيد لتصحيح الأخطاء أو التضمين في التعليمات البرمجية.
- Base64 (بدون رؤوس): DER خام مشفر كـ Base64 بدون رؤوس PEM، وغالبًا ما يستخدم في التكوينات المضغوطة أو حمولات الرمز المميز.
- PKCS#12 (PFX): تنسيق حاوية ثنائي يمكنه تجميع المفاتيح العامة والخاصة معًا، وعادة ما تكون محمية بكلمة مرور وغالبًا ما تستخدمها المتصفحات أو أنظمة Windows.
3️⃣ متى يجب عليك استخدام كل تنسيق؟
- PEM: الخيار الأكثر عالمية، ومناسب لـ OpenSSL، وخوادم الويب (Nginx/Apache)، وتبادل API.
- DER: يُستخدم بشكل شائع في بيئات Java أو حيث يكون التخزين الثنائي الصارم مطلوبًا.
- HEX: مفيد في تصحيح الأخطاء أو الأنظمة المدمجة أو عند الحاجة إلى فحص البايت الدقيق.
يستخدم تشفير
- Base64 (بدون رؤوس): مفيد عندما يكون التنسيق مقيدًا أو يكون التمثيل المضغوط مطلوبًا.
- PKCS#12: مفيد عندما يجب نقل المفاتيح العامة والخاصة معًا مع حماية المفتاح الخاص بكلمة مرور.