C++免费加密库

6

到目前为止,我发现了 BotanCrypto++ 这两个库都提供可逆加密(例如AES)和不可逆加密(例如SHA)。我想知道是否有人可以推荐其中之一或其他的库?


5
SHA不是一个加密(或密码)算法:它是一种哈希方法。 - ereOn
抱歉,我想不出一个单词来描述两者。但是,是的,我知道。 - Mr. Boy
SHA是一组“密码哈希函数”。这就是为什么你会在加密库中找到它的原因。 - MSalters
@ereOn,即使从技术上讲不准确,将哈希称为“不可逆加密”或“单向加密”也是很常见的。 - AviD
5个回答

8

OpenSSL拥有您所期望的所有功能,并且通常已经安装(至少在Linux上)。

它支持非对称/对称加密、数字签名和哈希算法。例如,您可以使用高级 OpenSSL EVP API进行对称加密。


此外,我应该指出,在许多方面,OpenSSL 被认为是标准。此外,根据您的领域,如果您需要接受审计或类似的事情,作为公认和备受推崇的东西,OpenSSL 不会引起任何问题,但是从匿名服务器下载的其他不良库可能会在审计员的轮子上插入一根棍子。 - AviD
不是吗(例如)SHA-256无论实现方式如何都是SHA-256 - 它是确定性的,因此您可以对其进行测试。 - Mr. Boy
@John:即使是相同的算法,具有相同的(测试)结果,实现也可能不同。有时,加密算法(参考)实现存在缺陷,容易受到攻击。AviD 的意思是,使用一个更稳定的库,如 OpenSSL,可以减轻这种风险。 - AndiDog
@John,我确实是像@AndiDog所说的那样,但更重要的是,OpenSSL是一个可信库,可以在审计期间跳过它作为一个完整的(相对)安全的黑盒子,而不必分解整个加密库。可以考虑将OpenSSL视为预先注册的“认可印章”,这样说吧。(并不是说它没有缺陷,但它比那些可疑的库要好)。 - AviD
我们使用的是Windows操作系统(理论上可以跨平台),不过OpenSSL看起来更偏向于Linux系统(使用tarballs等)。有没有针对MSVC的支持呢?如果想与我们的其他代码保持一致,那么我们需要自己从头构建项目吗? - Mr. Boy
@John:看起来http://www.slproweb.com/products/Win32OpenSSL.html上的OpenSSL Windows二进制文件实际上是使用MSVC构建的,所以我想你不应该有任何问题。 - AndiDog

3

谷歌有一个非常有趣的库:KeyCzar

值得注意的是:

  • 简单的API(我用过Crypto++,它可能很强大......但真是麻烦!)
  • 密钥轮换和版本控制(你确实打算让你的密钥不断发展吧?)
  • 安全的默认设置!!

老实说,对于那些不是密码专家的人来说,这3个要点是我认为最重要的考虑因素之一,一旦你知道实现是可靠的。


2

我曾经在CPP中使用过libtomcrypt,尽管它是用纯C编写的。
它非常庞大!这意味着它具有最下面的大部分密码和哈希函数的小型、强大且简单的API实现。
它不是GPL,因此您可以在闭源项目中使用它。


0

我模糊地记得使用过xyssl。提供了一个直接链接。链接文字


0

你也可以使用PoCo库,获取更多信息请访问www.pocoproject.org


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