كيف يمكنني تحويل مفتاح XML RSA إلى ملف PEM؟
-
29-09-2019 - |
سؤال
لدي ملفان XML ، منظمون على النحو التالي:
مفتاحي
<RSAKeyValue>
<Modulus> ... </Modulus>
<Exponent> ... </Exponent>
<P> ... </P>
<Q> ... </Q>
<DP> ... </DP>
<DQ> ... </DQ>
<InverseQ> ... </InverseQ>
<D> ... </D>
</RSAKeyValue>
مفتاح عام
<RSAKeyValue>
<Modulus> ... </Modulus>
<Exponent> ... </Exponent>
</RSAKeyValue>
أنا أستخدم xmlseclibs
مكتبة لروبرت ريتشاردز التي تتطلب تمثيل .pem للمفتاح من أجل تشفير الأشياء وفك تشفيرها.
بصفتي مبتدئًا في تشفير ، لست متأكدًا من أين أبدأ ، ولم يكشف بحث Google السريع عن أي شيء واضح بشكل خاص ...
شكرًا!
المحلول
لقد وجدت أ فائدة جافا يمكن أن تفعل ذلك.
نصائح أخرى
بالنسبة لأولئك الذين يريدون أن يكون القراءة من قبل PEM الناتجة نطاط القلعة:
- استعمال XMLSEC2PEM أداة للحصول على ملف PEM
- تحويل PEM إلى PKCS8 والعودة (!)
الحل النهائي الذي أنا سعيد بـ:
java XMLSec2PEM my.xml > my.pem
- تعديل
my.pem
يدويًا قليلاً org.bouncycastle.openssl.PEMReader.readObject()
عائداتnull
:-(openssl pkcs8 -topk8 -inform pem -in my.pem -outform pem -nocrypt -out my.pkcs8
openssl pkcs8 -inform pem -nocrypt -in my.pkcs8 -out my.pkcs8.pem
- حاليا
my.pkcs8.pem
يمكن قراءته معPEMReader
كنت أبحث لساعات عن نفس المشكلة بالضبط. قامت أداة Java هذه المهمة :)
لكن الرابط قد تغير ، وهو متاح الآن من هنا
وجدت هذه الأداة المفيدة عبر الإنترنت محول مفتاح RSA, الذي يدعم
- XML -> PEM
- PEM -> XML
نظرًا لأن XMLSeclibs هو PHP ، يبدو أن حل PHP آخر قد يكون مرغوبًا فيه. إليك الطريقة:
<?php
include('Crypt/RSA.php');
$rsa = new Crypt_RSA();
$rsa->loadKey('<RSAKeyValue>
<Modulus> ... </Modulus>
<Exponent> ... </Exponent>
<P> ... </P>
<Q> ... </Q>
<DP> ... </DP>
<DQ> ... </DQ>
<InverseQ> ... </InverseQ>
<D> ... </D>
</RSAKeyValue>');
$privatekey = $rsa->getPrivateKey();
$publickey = $rsa->getPublicKey();
?>
قامت Phpseclib بإنشاء دعم لمفاتيح XML ومفاتيح المعجون ومفاتيح PKCS1. سوف يكتشف تلقائيًا التنسيق وتحميله وسيقوم GetPrivateKey / getPublicKey بإخراج مفاتيح تنسيق PKCS1 افتراضيًا إذا لم يتم توفير معلمات. مزيد من المعلومات: