2010-07-31 72 views
1

標題基本上是這麼說的。如何將私鑰的十六進制表示轉換爲OpenSSL支持的格式(PEM/DER /?)

我有一個十六進制字符串代表一個私鑰,並且爲了能夠將它與OpenSSL一起使用,我需要能夠將它轉換爲OpenSSL支持的某種格式,無論是PEM還是其他任何格式。

我知道,一個可以讀取一個PEM格式的密鑰,並打印出來在這樣的格式:

Private-Key: (1024 bit) 
modulus: 
    01:02:03:04.. 
publicExponent: 65537 (0x10001) 
privateExponent: 
    01:02:03:04.. 
prime1: 
    01:02:03:04.. 
prime2: 
    01:02:03:04.. 
exponent1: 
    01:02:03:04.. 
exponent2: 
    01:02:03:04.. 
coefficient: 
    01:02:03:04.. 

但我一直無法找到一個關鍵,從這個格式的PEM將任何信息格式。我真的會被迫使用RFC戰士,並寫我自己的轉換器嗎?

+1

當你說你有一個十六進制字符串表示一個鍵時,這到底意味着什麼?十六進制字符串編碼一個字節字符串,但是一個字節字符串本身必須有一個格式。那麼底層數據的格式是什麼? OpenSSL命令行工具在格式轉換方面非常好,所以你可以用這些工具來完成。 – 2010-07-31 23:22:51

回答

0

其實,我自己找到了一個解決方案。

要做到這一點,我把上面描述的格式分成8個十六進制字符串。

之後,你需要做的唯一事情就是從磁盤或其他東西讀取密鑰,然後使用BN_hex2bn()函數並填充RSA結構。填充完畢後,可以使用PEM_write_RSAPrivateKey將其寫入磁盤。

我知道答案不是很詳細,但如果你是人的功能(你是其他人遇到這個問題),這一切都很清楚。

0

我還沒有嘗試過這種方式,但你可能想看看充氣城堡API,從這裏開始:

http://www.bouncycastle.org/docs/docs1.6/index.html

看樣子你可以設置專用密鑰的部分,那麼你可以使用他們的API將其保存爲標準格式。

他們有一個Java和.NET API可用。

相關問題