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

时间:2015-11-08 10:52:36

标签: php codeigniter encryption rsa

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

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

1 个答案:

答案 0 :(得分:41)

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

安全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的加密消息说出public enum MyEnum { Choice = 1, Choicee = 2, Choiceee = 3 } 。更糟糕的是,如果一条消息的内容已知,则可以搜索块从另一条消息中的第一条消息中恢复其部分内容。