如何在 Codeigniter RSA 库中生成签名和密钥

How to generate signature and keys in Codeigniter RSA library

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

即return签名。然后我想验证等于以前的值或不解密的值(签名,previous_input,public_key)。我的问题是没有生成私钥和 public 密钥的方法。也用于生成签名。那么,如何使用 PHP 中的 RSA 库实现它?

不要使用那个库。完全没有安全感。

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

此外,此库正在以不适当的模式使用 RSA。它是 "encrypting" 和 "decrypting" 消息,通过将每组三个字母加密为单独的独立消息。这种方案是不安全的,因为可以编辑和重新排序各个块以创建新消息。 (例如,一条表示 SEND JO 3 的加密消息可以很容易地通过重复最后一个块来编辑为 SEND JO 3123!)更糟糕的是,如果一条消息的内容已知,则可以搜索块从另一封邮件中的第一封邮件中恢复其部分内容。