مولّد أزواج مفاتيح RSA مجاني عبر الإنترنت
ولّد زوج مفاتيح RSA عبر الإنترنت مجاناً — المفتاح الخاص لا يغادر متصفحك. RSA 2048/4096 وECDSA وEd25519 بصيغة PKCS#8 أو PKCS#1، مع JWK وبصمة SHA-256.
الافتراضي الحديث هو PKCS#8 (BEGIN PRIVATE KEY) وهو ما يتوقعه JDK. أما PKCS#1 (BEGIN RSA PRIVATE KEY) فهي الصيغة التقليدية في OpenSSL ولا تزال بعض البوابات تشترطها. والتبديل يعيد ترميز المفتاح نفسه.
احتفظ به سراً. من يملكه يستطيع انتحال هويتك.
ولّد النوع نفسه من أزواج المفاتيح من سطر الأوامر
يتحقّق فريقنا من تحويل PKCS#8 إلى PKCS#1 بايتاً بايتاً مقابل مخرجات مرجعية من وحدة crypto في Node، فالمفتاح المصدَّر هنا مطابق تماماً لما ينتجه OpenSSL للمادة نفسها.
ما هو مولّد مفاتيح RSA؟
ينتج مولّد مفاتيح RSA زوجاً مرتبطاً رياضياً: مفتاح خاص تحتفظ به لنفسك، ومفتاح عام توزّعه على غيرك. كل ما يُوقَّع بالنصف الخاص يمكن التحقق منه بالنصف العام، والنصف العام وحده آمن للنشر. وعدم التماثل هذا هو جوهر الفكرة كلها — فهو ما يتيح للمتحقّق أن يفحص تواقيعك دون أن يكتسب القدرة على تزويرها، وهو ما لا يقدّمه مفتاح سري مشترك أبداً.
يعمل هذا المولّد داخل متصفحك عبر Web Crypto API، فيُنشأ المفتاح الخاص في التبويب ولا تُصدر الصفحة أي طلب شبكة أثناء التوليد. وإلى جانب RSA ينتج أيضاً أزواج ECDSA وEd25519، وهي تخدم الغرض نفسه بمفاتيح أقصر بكثير: مفتاح Ed25519 الخاص 48 بايتاً في PKCS#8، بينما يتجاوز مفتاح RSA بطول 2048 بت 1.2 كيلوبايت.
وما يربك الناس ليس الرياضيات بل التغليف. يمكن كتابة المفتاح نفسه بصيغة PKCS#8 أو PKCS#1 أو SPKI أو JWK، والمكتبة التي ترفض إحداها كثيراً ما تقبل أخرى دون رسالة أوضح من «فشل التحليل». والجدول أدناه يربط كل حاوية بالمنظومات التي تتوقعها.
// Verify a downloaded key pair matches, using OpenSSL: openssl pkey -in rsa-2048-private.pem -pubout | diff - rsa-2048-public.pem // No output means the public key really belongs to that private key.
الميزات الرئيسية
يُولَّد داخل متصفحك
تأتي المفاتيح من Web Crypto API في تبويبك أنت، ولا تُصدر الصفحة أي طلب شبكة أثناء التوليد. اقطع اتصالك وستواصل العمل، وهذا يبيّن أن الأداة لا تحتاج خادماً لتؤدي مهمتها.
RSA وECDSA وEd25519
RSA بأحجام 2048 و3072 و4096؛ وECDSA على المنحنيات P-256 وP-384 وP-521؛ وEd25519 — كلها من صفحة واحدة وبخيارات التصدير نفسها.
إخراج PKCS#8 وPKCS#1
بدّل بين ترويسة BEGIN PRIVATE KEY والبنية التقليدية BEGIN RSA PRIVATE KEY دون لمس OpenSSL. ويعيد المبدّل ترميز المفتاح المعروض على الشاشة، فيبقى المفتاح نفسه.
تصدير JWK
النصفان متاحان بصيغة JSON Web Key. وJWK العام هو ما يوضع في وثيقة JWKS أو مُتحقّق JOSE؛ أما JWK الخاص فهو لموقّعك وحده ويجب ألا يُنشر أبداً.
بصمة SHA-256
يأتي كل زوج ببصمة لمفتاحه العام كي تتحقق عبر قناة منفصلة من أن الطرفين يحملان المفتاح نفسه.
أوامر OpenSSL مطابقة
تُعرض تحت المخرجات الأوامر المكافئة لتوليد النوع نفسه من المفاتيح محلياً، فتنتقل إلى سطر الأوامر متى فضّلت ذلك.
تنزيلات بأسماء معقولة
تُحفظ الملفات باسمَي rsa-2048-private.pem وrsa-2048-public.pem بدل اسم تنزيل عام تضطر إلى تغييره.
بلا حساب وبلا حدّ معدّل
لا يوجد خادم في المعادلة، فلا شيء تسجّل فيه ولا حصة تستنفدها.
أمثلة محلولة
زوج Ed25519 معروضاً كاملاً
Algorithm: Ed25519
-----BEGIN PRIVATE KEY----- MC4CAQAwBQYDK2VwBCIEIA2HJVU1qChbOJN8XksXVhyD0IjYVt0UU6Mwz814rOFf -----END PRIVATE KEY----- -----BEGIN PUBLIC KEY----- MCowBQYDK2VwAyEAV5uB7UaPJrtncx3SXNtNzn1ZXjF1ApwvzBZ8nFzT5eU= -----END PUBLIC KEY-----
مفتاح Ed25519 الخاص 48 بايتاً في PKCS#8، والعام 44 بايتاً، لذا يحمل كل PEM سطراً واحداً من base64. وهذا زوج توضيحي يُتخلَّص منه — ولّد زوجك بنفسك بدل نسخه.
ترويسة PKCS#8 تختلف عن PKCS#1
Algorithm: RSA 2048, structure toggled
PKCS#8: -----BEGIN PRIVATE KEY----- PKCS#1: -----BEGIN RSA PRIVATE KEY-----
المفتاح نفسه بغلافين. تضيف PKCS#8 مُعرّف خوارزمية حول بنية RSA، ولهذا تصلح لكل الخوارزميات بينما لا توجد PKCS#1 إلا لـRSA. وتبديل المفتاح يعيد ترميز المفتاح المعروض على الشاشة، فلا تتغيّر البصمة.
مفتاح RSA 2048 العام
Algorithm: RSA 2048
-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtuvUHLjyK9zje2aaNIni eSccN1uleXFRBb1g2TN6bk/fbpPCGDyh71m73oB9Bk8+fKVkSThXyWTtpgblB7pX iQBtTvSWVZGHprkLgMGkU2Yw8Z43m1WpoRuYyXNFe92S5viIdVuKTj/VEUuEpzHd ffWMIUw70LaUdTP04iQdkNVeS3M6VHkpTwsPSQfsFSwObtLVNy2Lf+ODwJRqCk2r C749hgKqBdJqkcIj49R7UP4SMQ/9V3yy8DFMrIcgsjC4tHwlQSCGeXNxTNlapGSa ke55LUR83FASryVJRbUs678SCZSFkyGcT0qLZ/olu/e7Jj2lB0Qy/SJawkrs9hPE 4QIDAQAB -----END PUBLIC KEY-----
البادئة MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A هي مُعرّف خوارزمية rsaEncryption، وبها تتعرّف على مفتاح RSA بصيغة SPKI بمجرد النظر.
المفتاح العام بصيغة JWK
Algorithm: Ed25519, JWK panel
{
"key_ops": [
"verify"
],
"ext": true,
"alg": "Ed25519",
"crv": "Ed25519",
"x": "V5uB7UaPJrtncx3SXNtNzn1ZXjF1ApwvzBZ8nFzT5eU",
"kty": "OKP"
} هذا هو التصدير حرفياً، بما فيه العنصران key_ops وext اللذان يضيفهما Web Crypto دائماً. ومدخلة JWKS لا تريدهما — احذف كليهما، وأضف kid وuse بدلاً منهما كي يستطيع المتحقّقون اختيار المفتاح الصحيح أثناء التدوير. يقع Ed25519 ضمن نوع المفاتيح OKP، بينما تظهر مفاتيح RSA بالنوع RSA مع العنصرين n وe.
بصمة SHA-256
Algorithm: Ed25519
SHA256(SPKI) = KAXVxapxpG4zLsTVMpPafovT+X1NLWc8fsOXqtrb59o=
تجزئة SHA-256 لبنية المفتاح العام، قصيرة بما يكفي لقراءتها عبر الهاتف. ولاحظ أنها ليست القيمة التي يطبعها ssh-keygen — إذ يجزّئ OpenSSH صيغته السلكية الخاصة به، فلا يتطابق الاثنان أبداً للمفتاح نفسه.
كيفية استخدام مولّد مفاتيح RSA
- 1
اختر الخوارزمية
يغطي RSA أوسع مدى من الأنظمة القديمة. ويمنح ECDSA قوة مكافئة بمفاتيح أصغر بكثير. أما Ed25519 فهو الافتراضي الحديث لأي عمل توقيع جديد.
- 2
اختر حجم المفتاح
يفي RSA 2048 بالإرشادات الحالية، ويضيف 3072 و4096 هامشاً للمفاتيح طويلة العمر. ويوفّر ECDSA المنحنيات P-256 وP-384 وP-521. أما Ed25519 فله حجم واحد ثابت.
- 3
اختر بنية PEM
تُصدر PKCS#8 ترويسة BEGIN PRIVATE KEY وتعمل في كل مكان تقريباً، بما في ذلك JDK. ولا تنتقل إلى PKCS#1 إلا حين يطلب نظام ما ترويسة BEGIN RSA PRIVATE KEY تحديداً.
- 4
انسخ النصفين أو نزّلهما
يذهب المفتاح الخاص إلى مدير الأسرار لديك، ويذهب المفتاح العام إلى من يتحقّق من تواقيعك. لا ترسل النصف الخاص إلى أي جهة أبداً.
- 5
تحقّق من البصمة
قارن بصمة SHA-256 عبر قناة منفصلة لتتأكد أن الطرف الآخر ثبّت المفتاح العام الذي ولّدته فعلاً.
أخطاء شائعة في صيغة المفاتيح
لصق المفتاح العام في موضع المفتاح الخاص
يحتاج التوقيع النصف الخاص. والمكتبة التي تتلقى BEGIN PUBLIC KEY بينما تنتظر مفتاحاً خاصاً تبلّغ عادةً عن خطأ تحليل غير مفيد بدل تسمية المشكلة الحقيقية.
-----BEGIN PUBLIC KEY-----
-----BEGIN PRIVATE KEY-----
بنية PEM غير مناسبة للمكتبة
قليل من المنظومات لا يقرأ إلا البنية التقليدية لـRSA — مخرجات OpenSSL بخيار -traditional، وبعض حزم تطوير بوابات الدفع، وأدوات Ruby وPerl القديمة. أما معظم المكتبات الحديثة، وJDK على وجه الخصوص، فتتوقع PKCS#8. بدّل بنية PEM من المفتاح في الأعلى بدل البحث عن أمر تحويل.
-----BEGIN RSA PRIVATE KEY-----
-----BEGIN PRIVATE KEY-----
فقدان سطر جديد في النهاية
تنتهي ملفات PEM بسطر جديد بعد الفاصل الأخير. والنسخ عبر حقل نموذج يقصّ المسافات ينتج ملفاً ترفضه بعض المحلّلات رفضاً تاماً — ولأن المحرف الناقص غير مرئي، يبدو الملف سليماً في المحرّر.
-----END PRIVATE KEY-----[EOF]
-----END PRIVATE KEY-----↵[EOF]
محرف ضاع في الطريق
ما يكسر PEM هو محرف مفقود أو مُقحَم أو مُستبدَل، لا عرض السطر — فمعظم المحلّلات تقبل أي لفّ. والنسخ عبر عميل محادثة أو حقل نموذج قد يحوّل فاصل سطر إلى مسافة بصمت، ولا يعطي base64 أي تلميح عن المحرف الذي أخطأ؛ يفشل تحميل المفتاح فحسب. استخدم زر النسخ بدل التحديد باليد.
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtuvUHLjyK9zje2aaNIni eSccN1uleXFRBb1g2TN6bk
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtuvUHLjyK9zje2aaNIni eSccN1uleXFRBb1g2TN6bk
استخدام مفتاح HS256 السري حيث الإعداد RS256
يأخذ HS256 مفتاحاً سرياً مشتركاً واحداً، بينما يأخذ RS256 زوج مفاتيح. وتمرير سلسلة نصية عشوائية إلى موقّع RS256 يفشل عند خطوة التحليل. ولّد الزوج هنا، أو استخدم مولّد مفتاح JWT السري إن كنت تقصد HS256.
alg: RS256, key: 8f3a9c2e1b7d
alg: RS256, key: -----BEGIN PRIVATE KEY-----
لصق PEM في authorized_keys
مفتاح SSH العام هو صيغة OpenSSH ذات السطر الواحد ssh-ed25519 AAAA…، لا كتلة PEM، فلصق المفتاح العام من هذه الصفحة في authorized_keys لن يعمل. ومع مفتاح RSA يمكنك اشتقاق السطر الصحيح محلياً بـssh-keygen -y؛ أما للوصول عبر SSH عموماً فالتوليد على الجهاز الهدف أفضل.
-----BEGIN PUBLIC KEY-----
ssh-keygen -y -f rsa-2048-private.pem > id_rsa.pub
من يستخدم هذه الأداة
- توقيع رموز JWT بـRS256 أو EdDSA
- تحتاج خوارزميات JWT غير المتماثلة زوج مفاتيح بدل مفتاح سري مشترك. وقّع بالمفتاح الخاص، وانشر المفتاح العام، فلا يحمل المتحقّقون شيئاً يتيح لهم سكّ الرموز. يقبل منشئ JWT لدينا المفاتيح التي تنتجها هذه الصفحة.
- توقيع الـwebhooks والإصدارات
- انشر المفتاح العام مرة واحدة، ووقّع كل حمولة بالمفتاح الخاص، فيتحقق المستهلكون من الأصالة دون اعتماد مشترك قابل للتسريب.
- التطوير المحلي والاختبارات
- تحتاج مجموعات الاختبار التي تفحص التحقق من التواقيع زوج مفاتيح يُتخلَّص منه. وتوليده هنا أسرع من تذكّر صيغة أمر OpenSSL.
- معرفة شكل زوج المفاتيح
- التنقّل بين الخوارزميات وبنى PEM جنباً إلى جنب يجعل الفروق ملموسة بصورة لا تحققها قراءة المواصفة.
- تجهيز نقطة نهاية JWKS
- يندرج JWK العام مباشرةً في مصفوفة keys ضمن وثيقة اكتشاف OpenID Connect. أضف kid كي يستطيع المتحقّقون اختياره أثناء التدوير، وأبقِ JWK الخاص خارج ذلك الملف.
- الانتقال بعيداً عن RSA
- ولّد بديل Ed25519 إلى جانب أصل RSA وقارن الأحجام قبل أن تلتزم بالتغيير.
- إصلاح عدم تطابق الصيغة
- حين ترفض مكتبة مفتاحاً بخطأ تحليل، تكون إعادة إصداره بالبنية الأخرى من PEM هي الحل كاملاً في الغالب.
صيغ PEM وكيف يعمل المولّد
- أي حاوية تُستخدم أين
- مفتاح واحد وخمس عبوات. واختيار العبوة الخطأ هو السبب الأشيع لرفض مفتاح، ونادراً ما تكون رسالة الخطأ أدقّ من «فشل التحليل».
ولتحويل ملفات موجودة لديك، يمضيالحاوية ترويسة PEM ما تحمله أين تصادفها PKCS#8 BEGIN PRIVATE KEY أي خوارزمية Web Crypto وJDK وGo و.NET — معظم المكتبات الحديثة PKCS#1 BEGIN RSA PRIVATE KEY RSA فقط مخرجات OpenSSL التقليدية، وبعض بوابات الدفع، وأدوات Ruby وPerl القديمة SPKI / X.509 BEGIN PUBLIC KEY أي خوارزمية، النصف العام المفتاح العام الذي تتوقعه كل المكتبات تقريباً PKCS#1 العام BEGIN RSA PUBLIC KEY RSA فقط، النصف العام أدوات RSA القديمة JWK لا ترويسة — فهي JSON أي خوارزمية نقاط نهاية JWKS، واكتشاف OIDC، ومكتبات JOSE openssl pkcs8 -topk8 -nocrypt -in pkcs1.pem -out pkcs8.pemفي اتجاه، ويمضيopenssl rsa -traditional -in pkcs8.pem -out pkcs1.pemفي الاتجاه الآخر. - العشوائية تأتي من نظام التشغيل
- تبذر Web Crypto توليد المفاتيح من مصدر إنتروبيا المنصّة — getrandom على Linux، ومولّد النظام العشوائي الآمن تعمويّاً على Windows وmacOS. وهو الصنف نفسه من المصادر التي يسحب منها OpenSSL، لا مولّد عشوائي زائف مكتوب بـJavaScript.
- التوليد لا يجمّد الصفحة
- دالة crypto.subtle.generateKey لا تزامنية، وفي محرّكات المتصفحات الكبرى يجري البحث عن الأعداد الأولية خارج المسار الرئيسي، فتبقى الواجهة مستجيبة أثناء إيجاد معامل قياس بطول 4096 بت. وتعرض الصفحة مؤشر انتظار على أي حال، لأن مدة ذلك البحث تتوقف على حظ السحب.
- PKCS#8 تغلّف PKCS#1
- بنية PrivateKeyInfo في PKCS#8 هي رقم إصدار ومُعرّف خوارزمية وسلسلة ثُمانيات (OCTET STRING). ومع مفتاح rsaEncryption غير مُعمّى، تحتوي تلك السلسلة على بنية RSAPrivateKey كاملة بصيغة PKCS#1، وهكذا تحوّل هذه الصفحة بين الاثنتين دون إعادة اشتقاق أي شيء.
- المفاتيح العامة تستخدم SubjectPublicKeyInfo
- ترويسة BEGIN PUBLIC KEY هي بنية SubjectPublicKeyInfo من X.509: مُعرّف خوارزمية مع سلسلة بتات. وما يقع داخل تلك البتات يعتمد على الخوارزمية — فمع RSA هو RSAPublicKey بصيغة PKCS#1، ولهذا تكون BEGIN RSA PUBLIC KEY أقصر؛ ومع ECDSA هو نقطة المنحنى غير المضغوطة، ومع Ed25519 هو المفتاح الخام بطول 32 بايتاً.
- الأس العام هو 65537
- يستخدم كل مفتاح RSA هنا الأس e = 65537، ويُكتب 0x010001. وهو كبير بما يكفي لتفادي هجمات الأس الصغير، وفيه بتّان مضبوطان فقط، فيكلّف التحقق 16 عملية تربيع وضرباً واحداً.
- البصمات تُحسب على DER لا على PEM
- تُؤخذ بصمة SHA-256 على بنية SubjectPublicKeyInfo الثنائية. ولو حُسبت على نص base64 بدلاً من ذلك لتغيّرت كلما تغيّر لفّ الأسطر. والمكافئ محلياً هو
openssl pkey -in private.pem -pubout -outform DER | openssl dgst -sha256 -binary | openssl base64.
أفضل ممارسات إدارة المفاتيح
- ولّد المفاتيح حيث ستُستخدم
- المفتاح الخاص الذي يعبر شبكة يكون قد انكشف لكل محطة في الطريق. والتوليد في المتصفح يُبقي المفتاح نفسه بعيداً عن الشبكة، وإن كانت شيفرة الصفحة ذاتها تصل عبرها؛ أما التوليد على الخادم الهدف فيلغي حتى خطوة النسخ. وللمفتاح الذي يحمي أنظمة إنتاج، فضّل الخادم.
- فضّل Ed25519 ما لم يفرض شيء RSA
- يمنح Ed25519 أماناً قوياً بمفتاح من 32 بايتاً، مع توقيع سريع وبلا معاملات يمكن ضبطها خطأً. ولا تلجأ إلى RSA إلا حين لا يترك لك طرف مقابل أو مكتبة قديمة خياراً آخر.
- اعتبر 2048 بت هي الحد الأدنى
- منعت NIST SP 800-131A استخدام RSA دون 2048 بت لتوليد التواقيع منذ 2013، ولن تُصدر أي سلطة شهادات عامة شهادة لمفتاح أصغر. اختر 3072 أو 4096 للمفاتيح المتوقع بقاؤها في الخدمة سنوات طويلة.
- لا تودع مفتاحاً خاصاً في مستودع الشيفرة
- ضع المفاتيح الخاصة في مدير أسرار أو متغيّر بيئة يُحمَّل وقت التشغيل. وما إن يصل مفتاح إلى مستودع، يصبح تدويره هو الرد الآمن الوحيد.
- دوّر وفق جدول، لا بعد وقوع حادث فقط
- انشر المفاتيح العامة الجديدة بمُعرّف مفتاح قبل تقاعد القديمة كي يقبل المتحقّقون الاثنين خلال فترة التداخل. والتدوير الذي يُمارَس روتينياً هو التدوير الذي ينجح تحت الضغط.
الأسئلة الشائعة
هل توليد مفتاح خاص على موقع ويب آمن؟
ما الفرق بين PKCS#8 وPKCS#1؟
كيف أحوّل مفتاح PKCS#1 إلى PKCS#8 أو العكس؟
كيف أستخرج المفتاح العام من مفتاح RSA خاص؟
هل أختار RSA أم Ed25519؟
هل ما زال RSA بطول 2048 بت قوياً بما يكفي؟
هل أستطيع استخدام هذه المفاتيح لتوقيع رموز JWT؟
هل تستطيع هذه الأداة توليد مفتاح SSH؟
هل أستطيع حماية المفتاح الخاص بعبارة مرور؟
ما فائدة البصمة؟
أدوات ذات صلة
عرض جميع الأدوات →فك تشفير AES — يدعم OpenSSL/CryptoJS
أدوات الأمن
فك تشفير AES أونلاين — GCM/CBC/CTR، عبارة مرور أو مفتاح خام، يكتشف تلقائيًا صيغة OpenSSL وCryptoJS "U2FsdGVkX1". يعمل 100% داخل المتصفح، والمفاتيح لا تغادر الصفحة أبدًا.
أداة تشفير AES — GCM/CBC/CTR
أدوات الأمن
أداة تشفير AES مجانية أونلاين — AES-128/192/256، GCM/CBC/CTR، عبارة مرور (PBKDF2) أو مفتاح خام. تعمل 100% داخل متصفحك؛ لا شيء يُرفع.
مولّد تجزئة bcrypt والتحقق منها
أدوات الأمن
ولّد تجزئات كلمات المرور بـ bcrypt وتحقق منها أونلاين — تكلفة قابلة للضبط، بادئات $2b$/$2a$/$2y$. 100% في متصفحك؛ كلمة مرورك لا تُرفع أبداً.
مولّد HMAC ومدقّق التوقيع
أدوات الأمن
مولّد ومدقّق HMAC مجاني أونلاين. احسب HMAC-SHA256/SHA1/SHA384/SHA512 بمفاتيح Text أو Hex أو Base64 وإخراج Hex/Base64/Base64URL. كل شيء داخل متصفحك — المفاتيح لا تغادر الصفحة.
محلّل JWT — فك ترميز الرموز
أدوات الأمن
فك ترميز رموز JWT أونلاين مع محلّل JWT المجاني. افحص الترويسة والحمولة والتوقيع وانتهاء الصلاحية والخوارزمية والمطالبات فوراً. 100% في المتصفح — رمزك لا يغادر جهازك. بلا تسجيل، بلا تتبّع.
مُنشئ وترميز JWT
أدوات الأمن
مولّد ومرمّز JWT مجاني أونلاين. ابنِ الترويسة والحمولة، ووقّع بـ HS256 أو RS256 أو ES256 فوراً. 100% في المتصفح — سرّك ومفتاحك لا يغادران جهازك.