- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写将生成 RSA key 对、导出\导入 key 和加密字符串的小程序。所以,我写了这段代码:
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 以崩溃告终。我不知道该怎么做才能解决这个问题。
最佳答案
CryptEncrypt(hKey, NULL, true, NULL, NULL, &possiblersa, NULL))
将在 possiblersa
中存储通过从空指针加密零字节返回的数据量。您几乎肯定需要传入要加密的实际数据(来自 data.c_str()
)。
CryptEncrypt(hKey, NULL, true, NULL, buffer, &temp, possiblersa)
这会加密您的纯文本并声明您提供的缓冲区的长度为possiblera
。这几乎肯定不是真的:possiblersa
很可能比 length
大得多。
您需要延迟分配缓冲区(并将明文复制到其中),直到您发现密文缓冲区需要多大。 (它至少和明文一样长,但也可以长得多。)
关于c++ - 函数 CryptEncrypt 期间崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57055338/
我正在尝试制作一个使用 AES 256 加密的应用程序。不幸的是我无法让它工作。也许我没有完全理解密码逻辑。 所以它正在工作,但据我了解,哈希包含密码。但如果我更改密码,输出是相同的。因此,Crypt
我正在尝试使用 wincrypt 加密文本消息。然而,我的代码是不可预测的。它不会加密/解密整个明文,而只是其中的一部分。如果我更改密码的长度(例如更改为“password123”),它会加密/解密不
在我们的产品中有这样一种情况,很长一段时间以来,一些数据作为 SQL 字符串(选择 MS SQL 服务器或 sybase SQL)存储在应用程序的数据库中,这些数据是通过 Windows API 函数
我正在编写将生成 RSA key 对、导出\导入 key 和加密字符串的小程序。所以,我写了这段代码: void EncryptString(std::string data) { int lengh
我正在使用 Windows API CryptEncrypt 和 CALG_AES_256我想用密码来加密,据我了解 1. CryptAcquireContext 2. CryptCreateHa
我制作了一个小应用程序来加密和解密一些文本。只要我直接使用加密的字节数组,一切都很好。但是,一旦我复制数组以模仿将加密文本作为文件发送的过程,解密就不会运行。 为什么我无法使用复制的数组运行解密? u
.net 有这些函数的实现吗?或者您知道我可以从哪里下载该单元,它将这些方法包装在一个 c# 单元中吗? 谢谢! 最佳答案 这就是你要找的here 关于c# - .net 下是否提供 CryptoAP
首先,如果我在这里遗漏了什么,我深表歉意。这是我对 Windows CryptAPI 的第一次尝试,虽然我已经通过谷歌、MSDN、MSDN 的示例等进行了搜索,但我无法弄清楚为什么会出现此问题。我有以
你好我正在尝试在 C++ 和 C# 之间加密和解密已经使用 CryptEncrypt wincrypt 在这里我使用的代码创建了一个 dll 项目C++语言 #include #include e
我是一名优秀的程序员,十分优秀!