【发布时间】:2019-06-21 11:52:23
【问题描述】:
我在我的加密应用程序中使用 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 具有不同的值。在这种情况下是否重要?我在这项加密工作上工作的时间更长。任何帮助表示赞赏。
【问题讨论】:
标签: encryption visual-c++ blob cryptoapi visual-c++-6