【问题标题】:AES implementation using Crypto++使用 Crypto++ 的 AES 实现
【发布时间】:2018-07-13 14:15:36
【问题描述】:

我想在 Visual Studio (C++) 中实现 AES 加密/解密。我已经通过Compiling and Integrating Crypto++ into the Microsoft Visual C++ Environment + Running Sample program

我已经按照那里提到的所有步骤并尝试构建应用程序,但是在编译时我得到了链接器错误,下面的链接是我在应用程序中面临的错误的参考。

https://www.dropbox.com/sh/32ajyx0vc6391q0/AACRYndRpbKynntADFgZUdXYa?dl=0

谁能告诉我这个错误的解决方法?

谢谢

【问题讨论】:

  • 复制您的错误内容并以纯文本形式粘贴到此处。不要使用外部站点来托管任何图像,而是使用 stackoverflow。 “visual basic (C++)”是什么意思?是 C++ 还是 VB?为什么你还提到了 VB?
  • 感谢您的回复,我错误地提到了 Visual Basic 而不是 Visual Studio(现已编辑),
  • 在您的说明中,应该解决此问题的步骤是第 6 步的一部分:“现在转到链接器并选择输入并在附加依赖项中输入 cryptlib.lib 路径,如图所示"。
  • 原文可以在Compiling and Integrating Crypto++ into the Microsoft Visual C++ Environment找到。没有必要使用撕掉的文章。原始文章告诉您如何修复链接器错误。
  • 谢谢,现在我已经添加了“附加依赖项”,如步骤 6 所示,还添加了所需的头文件,但我仍然低于 LINKING ERRORS。

标签: c++ visual-studio-2010 encryption aes crypto++


【解决方案1】:

我通过更改 CryptoPP 版本解决了这个 LINKING 错误。

之前我在 Visual Studio 2010 中使用 CryptoPP 版本 (7.0.0),现在我尝试使用 CryptoPP 版本 (5.6.2)。

现在我可以编译没有任何错误了。

感谢您的建议。

【讨论】:

  • 听起来您正在混合/匹配库的版本。以前听起来像这样,但您没有说明您在不同的地方安装了不同版本的库。如果您完全删除旧的 Crypto++ 5.6.2 文件,您的设置可能会成功。
【解决方案2】:

我建议您放弃 cryptopp 并改用 Windows 内置加密。这样,代码的主要部分,即算法将得到 MS 的支持,并作为 Windows 更新的一部分进行更新。

作为一个很好的副作用,它会更快地构建,二进制文件会小得多,并且所需的库 Advapi32.lib 是 Windows SDK 的一部分,即您不太可能遇到链接器问题。

See this answer 示例如何从密码中获取 AES 密钥。但是那里的代码不太理想,相反,我通常创建简单的 RAII 包装器,如下所示:

class Context
{
    HCRYPTPROV hProv = 0;
public:
    Context() : hProv( 0 ) {}
    ~Context()
    {
        if( 0 != hProv )
            CryptReleaseContext( hProv, 0 );
    }
    operator HCRYPTPROV () const
    {
        return hProv;
    }
    HRESULT open()
    {
        if( !CryptAcquireContext( &hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT ) )
            return GetLastHr();
        return S_OK;
    }
};

对我需要的其他 HCRYPT* 句柄执行相同操作。

然后查看MSDN example code,了解如何使用该 AES 密钥加密数据。

【讨论】:

  • 伙计,你没有努力回答这个问题。也许您应该打开一个新问题,您可以在其中提供答案。
  • @jww 您是否看到“或者让我知道如何在 C++(Windows) 中使用 AES 加密/解密文本?” OP的问题中的行?
猜你喜欢
  • 2021-06-09
  • 2012-08-31
  • 1970-01-01
  • 1970-01-01
  • 2015-03-29
  • 1970-01-01
  • 2022-09-27
  • 1970-01-01
  • 2012-12-28
相关资源
最近更新 更多