【发布时间】:2011-12-07 09:15:28
【问题描述】:
我正在尝试在 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,使用以下方法:
- CreateFile & ReadFile 读取文件内容
- CryptStringToBinary,使用 CRYPT_STRING_BASE64HEADER 从 PEM 格式转换为 DER 格式(删除页眉和页脚并从 base64 解码)
- CryptDecodeObjectEx 与 X509_PUBLIC_KEY_INFO
- CryptImportPublicKeyInfo,导入密钥
但是现在,我的问题是用 私钥 做同样的事情。 任何帮助都会非常感激:) 谢谢。
【问题讨论】:
-
Crypto API 用于专有加密,将其用于 PGP 很奇怪
-
是的,当然。但事实是我无法选择密钥的格式:/ 否则我会选择 CryptoAPI 的专有格式。但是由于可以从 PEM 格式导入公钥,我认为使用私钥也可以。
标签: c++ windows cryptography cryptoapi pem