CryptoAPI - 如何从私有中提取R​​SA公钥

时间:2015-02-22 06:54:29

标签: rsa public-key-encryption cryptoapi encryption-asymmetric

使用Windows CryptoAPI,是否可以从导入(未生成)的私钥获取公共RSA密钥?

如果我使用CryptGenKey,我可以调用CryptExportPublicKeyInfo和CryptImportPublicKeyInfo来获取公钥处理。但是,当我尝试使用从PEM解码并使用以下导入的私钥执行相同操作时:

CryptImportKey(hCSP, pKeyBuf, cbKeyBuf, 0, CRYPT_EXPORTABLE, &hPrivKey)

导入私钥成功,我有一个有效的句柄,但随后对CryptExportPublicKeyInfo的调用失败并显示“Key not exists”错误。看起来CryptImportKey和CryptExportPublicKeyInfo之间缺少另一个调用,但我找不到该API调用。

1 个答案:

答案 0 :(得分:1)

导出/导入公钥的问题是因为私钥是使用AT_SIGNATURE而不是AT_EXCHANGE生成的。请参阅explanationexample code