gpt4 book ai didi

c++ - C++ 中的 RSA PKCS#1 V2.1 实现

转载 作者:搜寻专家 更新时间:2023-10-31 01:53:13 25 4
gpt4 key购买 nike

我在哪里可以找到 C++ 中的 RSA PKCS#1 V2.1 实现?
我找到了一个实现 here ,但我不确定它是否符合该标准。
任何人都可以解释 RSA 算法的各种实现之间可能导致操作不一致的主要差异吗?

最佳答案

RSA 算法是一种原语,您可以将其用于两个目的:

  • 保密性(即公钥加密),或
  • 来源证明(即与加密散列组合时的数字签名)

PKCS#1 是标准,如今大多数人都将其用于基于 RSA 的加密和签名。更具体地说,最新版本的 PKCS#1 (2.1) 定义了四种不同的方案:

  • PKCS#1 v1.5 加密(仅供遗留用途,任何人不得再使用)
  • OAEP 加密(任何新实现的首选)
  • PKCS#1 v1.5 签名
  • PSS 签名

换句话说,当您说“RSA PKCS#1 V2.1”时,您实际上应该指的是上述任何方案,因为库可以实现方案的一个子集。

PKCS#1 标准写得非常好,因此根据定义,它的所有正确实现都是相互兼容的。由于除第一个方案之外的所有方案都依赖于加密哈希,因此您还需要验证所选库是否包含您计划使用的方案(例如 SHA-256)。

我强烈建议通过查看测试 vector 集(有多少以及它们来自哪里)来判断库的质量。

不过,正确的实现不一定安全。除了像缓冲区溢出这样的普通事情之外,还应该验证该库是否考虑了所有针对 RSA 实现的最新攻击(至少包括最实用的 side channel attacks on RSA )。这很难评估,但是 - 对于开源库 - 您可以通过查看社区的规模和事件以及它们是否 publish vulnerabilities 来感受一下。一旦被发现。

开源 C++ 库,如 BotanCrypto++是一个不错的选择。您可能只想检查它们在目标平台上是否足够快,它们的许可证(分别是 BSD 和公共(public)域)是否可接受,以及它们是否与您的平台兼容。

关于c++ - C++ 中的 RSA PKCS#1 V2.1 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11447548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com