【问题标题】:C++ free encryption librariesC++ 免费加密库
【发布时间】:2011-04-09 01:25:23
【问题描述】:

到目前为止,我遇到过Botan 和Crypto++,它们都提供可逆(例如 AES)和不可逆(例如 SHA)加密。我想知道是否有人可以推荐任何一个,或者其他的?

【问题讨论】:

  • SHA 不是一种加密(或密码)算法:它是一种散列方法。
  • 抱歉,我想不出一个词来形容两者。但是,是的,我知道
  • SHA 是一系列“加密哈希函数”。这就是你在加密库中找到它的原因。
  • @ereOn,将散列称为“不可逆加密”或“单向加密”是很常见的(即使在技术上并不准确)。

标签: c++ security encryption


【解决方案1】:

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

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

【讨论】:

  • +1,除此之外我应该指出,OpenSSL 被认为是 标准。最重要的是,根据您的领域,如果您需要进行审核或类似的事情,OpenSSL 作为公认和备受推崇的东西不会引起任何问题,但是您从匿名服务器下载的其他一些狡猾的库可能会戳审计师车轮上的一根棍子。
  • 无论实施如何,都不是(例如)SHA-256 SHA-256 - 它是确定性的,因此您可以对其进行测试。
  • @John:即使是相同的算法具有相同的(测试)结果,实现也可能不同。有时,加密算法(参考)实现存在缺陷并且容易受到攻击。 AviD 意味着像 OpenSSL 这样更稳定的库可以降低此类风险。
  • @John,我确实像@AndiDog 所说的那样,但更重要的是,OpenSSL 是一个受信任的 库,并且可以在完整的审计过程中跳过, (相对)安全的黑盒,无需分解整个加密库。可以说,考虑 OpenSSL 具有预先注册的“批准印章”。 (并不是说它没有缺陷,但它比那些狡猾的要好)。
  • 我们是 Windows(名义上是跨平台的),我想这没问题,尽管 OpenSSL 看起来非常面向 Linux(tarball 和所有)。是否有任何对 MSVC 的支持,或者如果我们想与我们的其他代码保持一致,我们是否需要从头开始构建我们自己的项目?
【解决方案2】:

Google 有一个非常有趣的库:KeyCzar。

感兴趣的:

  • 简单的API(我用过Crypto++,它可能很强大……但是太麻烦了!)
  • 密钥轮换和版本控制(您确实打算让您的密钥进化,对吧?)
  • 安全默认!!

坦率地说,一旦您知道实施是合理的,我认为这 3 点是最重要的考虑因素。特别是对于我们这些不是加密专家的人。

【讨论】:

    【解决方案3】:

    我曾经使用libtomcrypt 来表示 CPP,尽管它是用纯 C 编写的。
    它非常大!意味着它具有小型、健壮和简单的 API 实现,可以实现大多数密码和哈希。
    它不在 GPL 上,因此您可以在封闭的项目中使用它。

    【讨论】:

      【解决方案4】:

      我依稀记得使用 xyssl。提供了直接链接。 link text

      【讨论】:

        【解决方案5】:

        您也可以使用 PoCo 库,有关更多信息,请访问 www.pocoproject.org

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-12
          • 2023-02-14
          • 1970-01-01
          • 1970-01-01
          • 2021-11-20
          相关资源
          最近更新 更多