2010-07-31 74 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可用。

相关问题