Пытаюсь реализовать функцию дешифрования из DPAPI. Позже я заметил, что после моей функции в памяти забивается 8.13 kB. Я выполнил снятие памяти на каждой строке и выявил, что эту память занимает функция CryptUnprotectData. Это косяк тех программистов, которые писали эту функцию или мне просто нужно очистить определенные переменные? Или же есть какой то другой вариант?
#include <vector>
#include <wincrypt.h>
#pragma comment(lib, "Crypt32.lib")
using namespace std;
void DecryptDPAPI(vector<byte> input, vector<byte> entropy)
{
vector<byte> result; // + 0.04 KB
DATA_BLOB inputBlob;
inputBlob.cbData = input.size();
inputBlob.pbData = &input[0];
PDATA_BLOB entropyBlob = NULL;
if (entropy.size() > 0)
{
entropyBlob = &DATA_BLOB();
entropyBlob->cbData = entropy.size();
entropyBlob->pbData = &entropy[0];
}
DATA_BLOB resultBlob;
resultBlob.cbData = 0;
resultBlob.pbData = NULL;
if (CryptUnprotectData(&inputBlob, NULL, entropyBlob, NULL, NULL, CRYPTPROTECT_LOCAL_MACHINE, &resultBlob)) // + 8.13 KB
{
result = vector<byte>(resultBlob.pbData, resultBlob.pbData + resultBlob.cbData); // + 0.04 KB
}
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости