0

使用 C,我可以使用 生成 RSA 公钥并将其写入 PEM 文件PEM_write_RSAPublicKey()

但我想将多个公钥写入单个文件(如 known_hosts 或 authorized_hosts),而不是拥有separate PEM file for each.

我知道怎么encode/decode base64

但我如何得到public key from the RSA structure (which I can base64 encode) and later read the same key from file and put it back into the RSA structure for encrypting/decrypting

4

1 回答 1

0

如果使用“a+”打开,PEM_write_RSAPublicKey() 将附加到文件中,但没有指示哪些密钥适用于哪个客户端。我不想要 PEM 格式,只是将每个公钥写入文件中的一行。

我发现公钥是 DER 格式,我可以从 RSA 结构中使用:

len = i2d_RSAPublicKey(rsap, 0);
buf1 = buf2 = (unsigned char *)malloc(len + 1);
rc = i2d_RSAPublicKey(rsap, (unsigned char **)&buf2);

然后我对 buf1 进行 base64 编码并将其写入我的文件。从文件中读取它后,将其放回 RSA 结构中正好相反:

rsap = d2i_RSAPublicKey(NULL, (const unsigned char **)&buf1, (long)len);
于 2013-10-04T17:29:49.847 回答