Text 如何将私钥的十六进制表示形式转换为支持OpenSSL的格式(PEM/DER/?)
标题基本上说明了一切 我有一个表示私钥的十六进制字符串,为了能够与OpenSSL一起使用,我需要能够将其转换为OpenSSL支持的某种格式,无论是PEM还是其他格式 我知道人们可以读取PEM格式的密钥,然后以如下格式打印出来:Text 如何将私钥的十六进制表示形式转换为支持OpenSSL的格式(PEM/DER/?),text,format,openssl,pem,Text,Format,Openssl,Pem,标题基本上说明了一切 我有一个表示私钥的十六进制字符串,为了能够与OpenSSL一起使用,我需要能够将其转换为OpenSSL支持的某种格式,无论是PEM还是其他格式 我知道人们可以读取PEM格式的密钥,然后以如下格式打印出来: Private-Key: (1024 bit) modulus: 01:02:03:04.. publicExponent: 65537 (0x10001) privateExponent: 01:02:03:04.. prime1: 01
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格式的信息。我真的会被迫这样做并编写自己的转换器吗 我没有这样尝试过,但您可能想看看Bouncy Castle API,从这里开始: 看起来您可以设置私钥的各个部分,然后使用它们的API将其保存为标准格式
他们有一个Java和.NET API可用。事实上,我自己找到了一个解决方案 为此,将上述格式拆分为8个十六进制字符串 在此之后,您只需从磁盘或其他地方读取密钥,然后使用BN_hex2bn()函数填充RSA结构。填充后,可以使用PEM_write_rsaprovatekey将其写入磁盘
我知道答案不是很详细,但是如果你操作这些函数(你是另外一个遇到这个问题的人),一切都会很清楚 当你说你有一个十六进制的字符串代表一个键,那到底是什么意思?十六进制字符串编码字节字符串,但字节字符串本身必须具有格式。那么底层数据的格式是什么呢?OpenSSL命令行工具非常擅长在格式之间进行转换,因此您可以使用这些工具进行转换。