1

标题基本上说明了一切。

我有一个代表私钥的十六进制字符串,为了能够将它与 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 战士并编写自己的转换器吗?

4

2 回答 2

0

我没有尝试过这种方式,但你可能想看看 Bouncy Castle API,从这里开始:

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

看来您可以设置私钥的部分,然后您可以使用他们的 API 将其保存为标准格式。

他们有可用的 Java 和 .NET API。

于 2010-07-31T22:37:44.090 回答
0

实际上,我自己找到了解决方案。

为此,将我上面描述的格式拆分为 8 个十六进制字符串。

之后,您唯一需要做的就是从磁盘或其他任何地方读取密钥,然后使用 BN_hex2bn() 函数并填充 RSA 结构。填写完毕后,您可以使用 PEM_write_RSAPrivateKey 将其写入磁盘。

我知道答案不是很详细,但是如果您掌握这些功能(您是遇到此问题的其他人),一切都会很清楚。

于 2010-08-03T16:24:23.403 回答