Я использую blob в своем приложении шифрования для хранения ключа шифрования.
Я новичок в MFC.Я использую CryptExportKey()
для экспорта ключа в BLOB-объект.Я поместил приведенный ниже код в мою функцию Encrypt()
.См. Код в функции Encrypt()
ниже,
if (CryptGetUserKey(
m_hCryptProv,
AT_KEYEXCHANGE,
&hXchgKey))
{
printf("The key exchange key has been acquired. \n");
}
else
{
printf("Error during CryptGetUserKey exchange key.");
}
if (CryptExportKey(
m_hKey,
hXchgKey,
SIMPLEBLOB,
0,
NULL,
&dwBlobLen))
{
_tprintf(
TEXT("The key BLOB is %d bytes long. \n"),
dwBlobLen);
}
if (pbKeyBlob = (BYTE*)malloc(dwBlobLen))
{
printf("Memory has been allocated for the BLOB. \n");
}
if (CryptExportKey(
m_hKey,
hXchgKey,
SIMPLEBLOB,
0,
pbKeyBlob,
&dwBlobLen))
{
printf("Contents have been written to the BLOB. \n");
}
Также я поместил приведенный ниже код в функцию Decrypt()
для импорта ключа.
if (!CryptImportKey(
m_hCryptProv,
pbKeyBlob,
dwBlobLen,
0,
0,
&m_hKey))
{
//success
}
Экспорт завершился успешно, ноНе удалось импортировать.
Мой файл будет закрыт после шифрования.При загрузке приложения расшифровка также завершается ошибкой, поскольку ключ не был успешно импортирован.Во время шифрования и дешифрования m_hCryptProv
имеют разные значения.Это важно в этом случае?Я так долго работаю над этой работой по шифрованию.Любая помощь приветствуется.