我正在使用Crypto ++實現RSA。我正在嘗試生成一對RSA密鑰(公共和私有)來存檔。使用CryptoPP :: RSA時無法傳遞AutoSeededRandomPool作爲參數,錯誤C2729
代碼可以運行完美,當我把所有在main
。當我嘗試將它劃分到功能,並通過AutoSeededRandomPool
對象作爲這樣的參數:
int generateKeyToFile(
AutoSeededRandomPool rnd,
string publicKeyFileName, string privateKeyFileName){
try
{
RSA::PrivateKey rsaPrivate;
rsaPrivate.GenerateRandomWithKeySize(rnd, 3072);
RSA::PublicKey rsaPublic(rsaPrivate);
EncodePrivateKey(privateKeyFileName, rsaPrivate);
EncodePublicKey(publicKeyFileName, rsaPublic);
cout << "Successfully generated and saved RSA keys" << endl;
return 1;
}
catch (CryptoPP::Exception& e)
{
cerr << e.what() << endl;
return -1;
}
}
當構建項目,我得到了錯誤:
error C2719: 'rnd': formal parameter with __declspec(align('8')) won't be aligned
我無法找到一個確切的加密+相關結果爲這個來自谷歌的錯誤,但我發現一些結果爲error code C2719。它的內容:
'parameter': formal parameter with __declspec(align('#')) won't be aligned
The align __declspec modifier is not permitted on function parameters. Function parameter alignment is controlled by the calling convention used. For more information, see Calling Conventions.
The following sample generates C2719 and shows how to fix it:
// C2719.cpp void func(int __declspec(align(32)) i); // C2719 // try the following line instead void func(int i);
我沒有從這個任何想法應用這個「解決方案」我的情況呢。
看起來像AutoSeededRandomPool
不能作爲參數傳遞。有沒有辦法解決這個問題?