我需要在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
)和非批准算法(即MD5
,Whirlpool
,Camellia
等)。
如果您想补充DLL,则必须从静态LIB中添加缺少的算法。 可以想象,这将是一个痛点。
SHA-1/HMAC使用静态密钥
{0x47, 0x1E, 0x33, 0x96, 0x65, 0xB1, 0x6A, 0xED, 0x0B, 0xF8, 0x6B, 0xFD, 0x01, 0x65, 0x05, 0xCC}
提供完整性保证的签名。任何人都可以篡改它,并在其上创建有效的签名。
我们在Crypto++维基上创建了一个页面。您可以在
FIPS DLL上找到它。它提供诸如实现细节之类的内容,并讨论操作环境等问题。