【问题标题】:How to generate signature and keys in Codeigniter RSA library如何在 Codeigniter RSA 库中生成签名和密钥
【发布时间】:2016-02-09 03:43:42
【问题描述】:

我正在使用 codeigniter 框架在 php 中进行一些加密和解密。我正在使用这个库https://github.com/Dirktheman/rsa-codeigniter-library。我想要做的是生成这样的签名encrypt_method(value,private_key)

这将返回签名。然后我想验证值是否等于前一个值或不解密(签名,previous_input,public_key)。我的问题是没有生成私钥和公钥的方法。也用于生成签名。那么,如何在 PHP 中使用 RSA 库来实现呢?

【问题讨论】:

  • Rsa 类有一个generate_keys 函数,但它是hilariously insecure(“随机”选择 2 个四位素数)。这基本上是混淆,不应该使用。如果您想在 PHP 中使用 RSA 功能,只需使用 phpseclib。
  • 请务必注意,它所基于的 2002 年以来的 HackerHunter RSA 实现也出于同样的原因不安全。

标签: php codeigniter encryption rsa


【解决方案1】:

不要使用那个库。这是完全不安全的。

安全的 RSA 实现依赖于使用随机生成的 素数(例如,至少 2048 位!)作为​​私钥的一部分。然而,这个库不使用大素数,甚至也不随机生成它们——it picks them from an array of 570 pregenerated four-digit numbers。这意味着只能生成大约 162,000 (570 * 569 ÷ 2) 个可能的密钥;这足够少,您可以轻松生成所有可能的公钥和私钥对的列表。

此外,此库以不适当的模式使用 RSA。它通过将每组三个字母作为单独的独立消息进行加密来“加密”和“解密”消息。这种方案是不安全的,因为可以编辑和重新排序各个块以创建新消息。 (例如,一条显示SEND JO $123 的加密消息可以通过重复最后一个块轻松编辑为SEND JO $123123!)更糟糕的是,如果一条消息的内容已知,则可以从第一条消息中搜索块在另一条消息中恢复其部分内容。

【讨论】:

  • 感谢您指出这一点。进一步强调,任何对 RSA 工作原理了解甚少的人都可以使用一张纸和一个袖珍计算器来破解使用该库加密的消息。
  • 这里提到的库的作者...对不起!几年前我写了这个作为练习。我不会在实时网站中实现它,因为它完全不安全。我会尽快从 GitHub 中删除它。
  • @DirkdeMan 谢谢,虽然看起来很多人已经在使用它了。 :(github.com/…
  • 感谢您的解释。所以这是死了吗?
  • @duskwuff - 查看这些搜索结果,可以肯定地说,使用类似素数数组的 20 个文件可能不是从这个库中获得的,因为它们大多较旧。正如上面 Henk Poley 所说,零号病人似乎是 2002 年的黑客猎人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-19
  • 1970-01-01
  • 2019-08-12
  • 2010-11-10
相关资源
最近更新 更多