C++ 使用winapi函数生成密钥时发生数据泄漏

C++ 使用winapi函数生成密钥时发生数据泄漏,c++,visual-studio,cryptoapi,wincrypt,C++,Visual Studio,Cryptoapi,Wincrypt,我有一个问题:当我试图用CryptGenKey生成AES密钥128长度时,我有数据泄漏 代码如下: void GeKey(HCRYPTKEY hKey, HCRYPTPROV hProvs) { DWORD len_iv = 0; if (!CryptGenKey(hProvs, CALG_AES_128, CRYPT_EXPORTABLE, &hKey)) { ExitProcess(0); } if (!CryptExpor

我有一个问题:当我试图用
CryptGenKey
生成AES密钥128长度时,我有数据泄漏

代码如下:

void GeKey(HCRYPTKEY hKey, HCRYPTPROV hProvs)
{
    DWORD len_iv = 0;

    if (!CryptGenKey(hProvs, CALG_AES_128, CRYPT_EXPORTABLE, &hKey))
    {
        ExitProcess(0);
    }

    if (!CryptExportKey(hKey, NULL, PLAINTEXTKEYBLOB, NULL, NULL, &len_iv))
    {
        ExitProcess(0);
    }

    unsigned char* aes_key_dec = new unsigned char[len_iv];

    if (!CryptExportKey(hKey, NULL, PLAINTEXTKEYBLOB, NULL, aes_key_dec, &len_iv))
    {
        ExitProcess(0);
    }

    for (int i = 0; i < len_iv; i++)
    {
        printf("%c", aes_key_dec[i]);
    }
    printf("\n\n");

    delete[] aes_key_dec;
}
void GeKey(HCRYPTKEY hKey、HCRYPTPROV HPROV)
{
德沃德·勒努四=0;
if(!CryptGenKey(HPROV、CALG_AES_128、CRYPT_EXPORTABLE和hKey))
{
退出过程(0);
}
if(!CryptExportKey(hKey、NULL、PLAINTEXTKEYBLOB、NULL、NULL和len_iv))
{
退出过程(0);
}
无符号字符*aes_key_dec=新的无符号字符[len_iv];
if(!CryptExportKey(hKey、NULL、PLAINTEXTKEYBLOB、NULL、aes_key_dec和len_iv))
{
退出过程(0);
}
对于(int i=0;i

delete[]aes\u key\u dec无法帮助我解决此问题。问题:您似乎不确定是否存在数据泄漏-请澄清。“…我有数据泄露?…还有“…怎么了…”理查德克里顿我的意思是,如何修复它?修复什么?关于这个问题尚不清楚的是您要求我们解决的问题。使用std::unique_ptr保持指向aes_key_dec的指针,您就会知道无论例程以何种方式退出,它都会被删除。您似乎不确定是否存在数据泄漏-请澄清。“…我有数据泄露?…还有“…怎么了…”理查德克里顿我的意思是,如何修复它?修复什么?关于这个问题不清楚的是您要求我们修复的内容。使用std::unique\u ptr保持指向aes\u key\u dec的指针,您就会知道无论例程以何种方式退出,它都会被删除。