0

我有一个公钥,我想用它来加密一段数据。我正在尝试导入公钥以使用它,但 CryptImportKey 给了我一个“无效参数”错误。

有什么问题?

这是我的代码:

if( !CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_AES, CRYPT_VERIFYCONTEXT) )
{
    /*
     * Print error and return
     */
}
pblob->header->bType = PUBLICKEYBLOB;
pblob->header->aiKeyAlg = CALG_AES_128;
pblob->header->bVersion = CUR_BLOB_VERSION;
pblob->header->reserved = 0;
pblob->key_len = key_len;

memcpy(pblob->key, key , key_len);

if( !CryptImportKey( &hProv,
    (LPCBYTE)pblob,
    sizeof(*pblob),
    0,
    CRYPT_EXPORTABLE,
    &hKey ) )
{
    // Print error and return
}
4

2 回答 2

0

感谢这里所说的一切,以及大量的搜索,我找到了答案: http ://www.ms-news.net/f2748/problem-importing-public-key-4052577.html

并用它来创建我自己的程序,我将其发布在另一个线程上: Load an X509 PEM file into Windows CryptoApi

于 2010-09-27T11:32:49.507 回答
0

Windows CryptoAPI 不能直接使用纯文本密钥;你必须跳过一些障碍才能做到这一点。 这是描述如何执行此操作的知识库文章

于 2010-09-24T02:23:44.127 回答