我正在编写将生成 RSA 密钥对、导出\导入密钥和加密字符串的小程序。所以,我写了这段代码:
void EncryptString(std::string data)
{
int lenght = strlen(data.c_str());
DWORD temp = data.length() * sizeof(char);
DWORD possiblersa = 0;
unsigned char* buffer = new unsigned char[lenght];
std::copy(data.begin(), data.end(), buffer);
if (!CryptEncrypt(hKey, NULL, true, NULL, NULL, &possiblersa, NULL))
{
printf("Error: %d\n", GetLastError());
ExitThread(0);
}
if (!CryptEncrypt(hKey, NULL, true, NULL, buffer, &temp, possiblersa)) // Problem here
{
printf("Error: %d\n", GetLastError());
ExitThread(0);
}
DWORD dlen = 0;
if (!CryptBinaryToString(buffer, possiblersa, CRYPT_STRING_BASE64, NULL, &dlen))
{
printf("Error: %d\n", GetLastError());
ExitThread(0);
}
TCHAR* str = new TCHAR[dlen];
if (!CryptBinaryToString(buffer, possiblersa, CRYPT_STRING_BASE64, str, &dlen))
{
printf("Error: %d\n", GetLastError());
ExitThread(0);
}
for (DWORD i = 0; i < dlen; i++)
{
printf("%d\n", str);
}
delete[] buffer;
delete[] str;
}
CryptEncrypt 以崩溃结束。我不知道我应该怎么做才能解决这个问题。