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的指针,您就会知道无论例程以何种方式退出,它都会被删除。