محوّل المفاتيح JWK ⇄ PEM
حوّل مفاتيح التعمية بين صيغتي JWK وPEM باستخدام Web Crypto API الحقيقي، واستخرج الخوارزمية/المنحنى/الحجم، واحسب بصمة RFC 7638 للمفتاح JWK.
🔒 تتم معالجتها بالكامل في متصفحك — ولا يتم تحميل أي شيء تدخله هنا على الإطلاق.
النتيجة
تظهر مفاتيح JSON Web Keys (JWK) ومفاتيح PEM بالتبادل في مكتبات JWT وأدوات TLS وإعدادات OAuth/OIDC، لكن التحويل يدوياً بين الاثنتين يعني فك ترميز base64 لبنى DER أو إعادة تنسيق JSON — من السهل أن يحدث خطأ غير ظاهر. هذه الأداة تُجري التحويل باستخدام Web Crypto API الحقيقي للمتصفح بدلاً من التلاعب بالنص: كتلة PEM الملصوقة تُستورد عبر crypto.subtle.importKey('spki'|'pkcs8', ...) ثم يعاد تصديرها بصيغة JWK عبر exportKey('jwk', ...)؛ والمفتاح JWK الملصوق يُستورد عبر importKey('jwk', ...) ويعاد تصديره بصيغة DER بصيغة SPKI أو PKCS8، ثم يغلّف بترويسة PEM الصحيحة. لأن المتصفح نفسه يتحقق من صحة مادة المفتاح ويفك تشفيرها، فإن أي مفتاح تالف أو اختيار خوارزمية غير مطابق يُبلَّغ بخطأ واضح بدلاً من إنتاج بيانات غير صالحة بصمت.
الخوارزميات المدعومة هي RSA (RSASSA-PKCS1-v1_5)، وEC على المنحنيات P-256/P-384/P-521، و—حيث ينفذها المتصفح— Ed25519 وX25519. دعم المتصفح لـ Ed25519/X25519 في Web Crypto لا يزال غير متسق عبر المحركات، لذلك بدلاً من التخمين من سلسلة وكيل المستخدم، تشغّل الأداة فحص generateKey() حقيقي للمنحنى المختار وتخبرك بوضوح إن كان غير مدعوم هنا، بدلاً من إرجاع نتيجة ملفّقة.
كل عملية تحويل تستخرج أيضاً البيانات الوصفية الحقيقية للمفتاح: لمفاتيح RSA، طول البِت للمعامل وخوارزمية التلبيد مباشرة من كائن CryptoKey؛ ولمفاتيح EC وOKP، المنحنى المسمّى؛ ولكل مفتاح، بصمة RFC 7638 للمفتاح JWK — وهي تلبيدة SHA-256 لأعضاء JWK المطلوبة مرتبة بترتيب معجمي دقيق (e/kty/n لـ RSA، وcrv/kty/x/y لـ EC، وcrv/kty/x لـ OKP/Ed25519/X25519). هذه البصمة هي ما تستخدمه أنظمة كثيرة كمعرّف "kid" للمفتاح، والحصول على ترتيب الأعضاء بشكل خاطئ ينتج تلبيدة مختلفة تماماً، وهذا بالضبط نوع الخطأ الذي يسهل الوقوع فيه عند التنفيذ اليدوي.
لأن كل شيء يعمل عبر crypto.subtle في علامة تبويب متصفحك، فإن مادة المفتاح الخاص لا تغادر جهازك أبداً — لا خادم، ولا رفع، ولا استدعاء API خارجي في أي مرحلة من مراحل التحويل.