gpt4 book ai didi

c++ - 使用不可导出的私钥和 CryptoAPI 进行解密

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:51:11 24 4
gpt4 key购买 nike

我在 Windows keystore 中创建了 RSA key 对。

我成功加密数据(对称 key ):

HCERTSTORE hstore = ::CertOpenSystemStore(NULL, L"TestStore");
PCCERT_CONTEXT pctxt = ::CertFindCertificateInStore(hstore, X509_ASN_ENCODING, NULL,

CERT_FIND_SUBJECT_STR, L"My Test Keys", NULL);

HCRYPTPROV hprovider = NULL;
if(!::CryptAcquireContext(&hprovider,
NULL,
MS_ENHANCED_PROV,
PROV_RSA_FULL,
NULL/*CRYPT_NEWKEYSET*/))
{
DWORD err = ::GetLastError();
return 0;
}

HCRYPTKEY hkey = NULL;
if(!::CryptImportPublicKeyInfo(hprovider,
X509_ASN_ENCODING,
&pctxt->pCertInfo->SubjectPublicKeyInfo,
&hkey
))
{
return 0;
}

现在我使用 CryptEncrypt() 和 HCRYPTKEY。


接下来我想用私钥解密数据,但它是不可导出的。我见过的所有示例都包括 key 的导入。

如何在不导出 key 的情况下解密数据?

最佳答案

嗯,我不是 RSA/Microsoft 商店方面的专家,但我想我明白你在这里想要做什么。你这样做有点倒退。您正在使用公钥进行加密,而私钥进行解密。因此假设您拥有私钥,因为这是您用来生成公钥的。

那么,让我们看看...要解密您需要 key 的数据,对吗?所以你可以(a)用公钥加密数据,然后找到导出私钥的方法,但是你会使用类似于私钥加密的东西,无论如何你最好还是使用河豚,或者( b) 使用您的私钥加密数据,以便您可以共享公钥进行解密。请记住 CryptImportPublicKeyInfo 返回一个句柄:http://msdn.microsoft.com/en-us/library/windows/desktop/aa380209(v=vs.85).aspx

所以我的意思是您已经有了答案。当你说你有一个对称 key 时,它就在那里。您要么使用相同的公钥解密,要么进行简单的转换:http://en.wikipedia.org/wiki/Symmetric-key_algorithm

关于c++ - 使用不可导出的私钥和 CryptoAPI 进行解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20628951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com