[英]How to import private key in PEM format using WinCrypt and C++?
我正在尝试在 C++ 中使用WinCrypt API 。
我的应用程序需要加密、解密、签名和验证文件,一旦我拥有正确的密钥,我就知道如何做到这一点。 但我的问题实际上是生成这些密钥的应用程序不同。
我拥有的是 PEM 格式文件中的公钥和私钥:
-----BEGIN RSA PRIVATE KEY-----
[Base64 encoded]
-----END RSA PRIVATE KEY-----
和 :
-----BEGIN RSA PUBLIC KEY-----
[Base64 encoded]
-----END RSA PUBLIC KEY-----
经过一番研究,我找到了如何使用以下方法导入公钥: here和here :
但是现在,我的问题是用私钥做同样的事情。 任何帮助都会非常感激:) 谢谢。
可以通过使用CryptDecodeObjectEx和PKCS_RSA_PRIVATE_KEY然后调用CryptImportKey将 PEM 私钥导入 CAPI。
我编写了一个示例,展示了如何使用 PEM 编码的 RSA 私钥使用 CAPI 对数据进行签名。 这是它的链接: http : //www.idrix.fr/Root/Samples/capi_pem.cpp
我希望这将有所帮助。
我使用 PEM 格式的加密私钥遇到了这个问题。 这是我解密和导入它所遵循的过程:
CryptStringToBinaryA
和CRYPT_STRING_BASE64HEADER
解码 PEMCryptDecodeObject
和PKCS_7_ASN_ENCODING
和PKCS_ENCRYPTED_PRIVATE_KEY_INFO
解码 ASN.1 数据
CryptDecodeObject
本身并不支持它。 您可以在此处找到该代码。BCryptDeriveKeyPBKDF2
从密码中导出加密密钥BCryptDecrypt
使用从密码派生的对称密钥解密私钥。CryptDecodeObject
与PKCS_7_ASN_ENCODING
和PKCS_PRIVATE_KEY_INFO
PrivateKey
数据成员上使用CryptDecodeObject
和PKCS_7_ASN_ENCODING
和PKCS_RSA_PRIVATE_KEY
。 最后一步的输出是RSA Private Key BLOB 。 这可以使用BCryptImportKeyPair
和LEGACY_RSAPRIVATE_BLOB
导入。 同样,可以在此处找到演示所有这些的代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.