我需要使用CryptoPP DLL和Qt吗?

4
官方Crypto++ Visual Studio Wiki页面本教程中提到,使用Qt时必须将CryptoPP作为DLL使用。但这是真的吗?我不能只将cryptlib编译为/MD和/MDd,并将其用作我的项目中的cryptlib.lib,而不是cryptopp.dll吗?为什么我需要包含外部DLL?我正在努力将CryptoPP编译为DLL,所以我想知道是否有方法可以直接使用cryptlib.lib(使用正确的Runtime /MD或/MDd编译)。谢谢。
1个回答

2

我需要在Qt中使用CryptoPP DLL吗?

不需要。但是像QT和MFC这样的库使用动态C++运行时,因此您需要切换到用于Crypto++的动态运行时。


但这是真的吗?我不能只将cryptlib编译为/MD和/MDd成cryptlib.lib,而不是cryptopp.dll,并将其与我的项目一起使用吗?为什么我需要包含外部DLL?

是的。只需更改为动态C++运行时库,然后链接到静态库即可。


我正在尝试将CryptoPP编译为DLL,但遇到了困难。

是的,这很麻烦。除非必须使用它,否则大家应该避免使用。


为什么除了已经编译好的FIPS签名之外,还会有人使用dll呢?

在美国联邦和美国国防部门从事业务的人必须使用FIPS版本。他们别无选择。OMB不允许机构使用未经验证的密码学。

DLL是专用的。 如果你想要FIPS DLL,则只能在Windows 2000 SP1、Windows XP SP3和Windows Server 2003 SP1上使用它。

DLL 具有批准的算法。 它缺少很多东西,比如实用程序(即HexEncoder)和非批准算法(即MD5WhirlpoolCamellia等)。

如果您想补充DLL,则必须从静态LIB中添加缺少的算法。 可以想象,这将是一个痛点。

SHA-1/HMAC使用静态密钥{0x47, 0x1E, 0x33, 0x96, 0x65, 0xB1, 0x6A, 0xED, 0x0B, 0xF8, 0x6B, 0xFD, 0x01, 0x65, 0x05, 0xCC}提供完整性保证的签名。任何人都可以篡改它,并在其上创建有效的签名。
我们在Crypto++维基上创建了一个页面。您可以在FIPS DLL上找到它。它提供诸如实现细节之类的内容,并讨论操作环境等问题。

1
除了已经编译好的 FIPS 签名之外,为什么会有人使用 dll 呢? - michnovka
1
@TomášNavara - 使用FIPS DLL存在显著的限制。请参阅链接页面以获取详细信息。此外,它没有签名,因此完整性不稳定,并且取决于将其安装到只读目录中,而在非企业环境中(所有用户都是管理员),这种目录实际上不存在。有一个基于固定密钥的HMAC,但任何人都可以计算它并使其看起来有效。 - jww

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接