2010-06-22 12 views
8

Tôi có hai tập tin XML, có cấu trúc như sau:Làm cách nào để chuyển đổi khóa XML RSA thành tệp PEM?

My chính

<RSAKeyValue> 
    <Modulus> ... </Modulus> 
    <Exponent> ... </Exponent> 
    <P> ... </P> 
    <Q> ... </Q> 
    <DP> ... </DP> 
    <DQ> ... </DQ> 
    <InverseQ> ... </InverseQ> 
    <D> ... </D> 
</RSAKeyValue> 

Một Public Key

<RSAKeyValue> 
    <Modulus> ... </Modulus> 
    <Exponent> ... </Exponent> 
</RSAKeyValue> 

Tôi đang sử dụng xmlseclibs thư viện bởi Robert Richards đòi hỏi đại diện .PEM của khóa để mã hóa và giải mã mọi thứ.

Là một người mới mã hóa, tôi không chắc chắn bắt đầu từ đâu, và một tìm kiếm Google lướt qua đã không tiết lộ bất cứ điều gì đặc biệt rõ ràng ...

Cảm ơn!

+0

Dường như xmlseclibs có một phương pháp 'XMLSecurityKey :: convertRSA' mà chấp nhận một mô đun và một số mũ và sẽ tạo ra một PEM khóa công khai tương thích. Tuy nhiên, nó dường như không có bất kỳ phương pháp nào để tạo các khóa riêng cần thiết. Bất kỳ trợ giúp nào về điều đó? – Philip

+0

Tôi tin rằng định dạng/bản trình bày chính là từ [RFC 3275, Cú pháp và Ký hiệu XML-Chữ ký] (https://www.ietf.org/rfc/rfc3275.txt) – jww

Trả lời

0

Tôi đã tìm kiếm giờ cho chính xác cùng một vấn đề. công cụ Java này đã làm công việc :)

Nhưng vào liên kết đã thay đổi, nó bây giờ có sẵn từ here

0

Các mặt hàng này trực tuyến công cụ hữu ích RSA Key Converter, mà hỗ trợ

  • XML -> PEM
  • PEM -> XML
+7

Không bao giờ sử dụng các công cụ trực tuyến cho loại thông tin nhạy cảm này. – Torge

+1

Chỉ có thể sử dụng khóa công khai. – Ofigenn

+1

Nó có thể hữu ích cho các khóa riêng được biết đến công khai, được sử dụng cho các cuộc biểu tình. –

0

Đối với những người muốn kết quả PEM có thể đọc được bởi BouncyCastle:

  1. sử dụng XMLSec2PEM công cụ để có được một tập tin pem
  2. convert pem để pkcs8 và lưng

Các giải pháp cuối cùng tôi hạnh phúc với (!):

  1. java XMLSec2PEM my.xml > my.pem
  2. chỉnh sửa my.pem theo cách thủ công một chút
  3. org.bouncycastle.openssl.PEMReader.readObject() lợi nhuận null :-(
  4. openssl pkcs8 -topk8 -inform pem -in my.pem -outform pem -nocrypt -out my.pkcs8
  5. openssl pkcs8 -inform pem -nocrypt -in my.pkcs8 -out my.pkcs8.pem
  6. tại my.pkcs8.pem là có thể đọc được với PEMReader
1

Kể từ xmlseclibs là PHP nó có vẻ như một giải pháp PHP có thể được mong muốn. Dưới đây là cách thực hiện:

<?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 đã xây dựng hỗ trợ cho khóa XML, khóa PuTTY và khóa PKCS1. Nó sẽ tự động phát hiện định dạng và tải nó và getPrivateKey/getPublicKey sẽ xuất các khóa được định dạng PKCS1 theo mặc định nếu không có tham số nào được cung cấp.Thông tin thêm:

http://phpseclib.sourceforge.net/rsa/examples.html#convert