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

问题描述 投票:3回答:1

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

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

php codeigniter encryption rsa
1个回答
41
投票

Do not use that library. It is completely insecure.

安全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!)更糟糕的是,如果一条消息的内容已知,则可以从另一条消息中的第一条消息中搜索块。恢复部分内容。

© www.soinside.com 2019 - 2024. All rights reserved.