具有短明文的不对称流密码=>短密文

时间:2010-12-06 22:49:43

标签: .net encryption cryptography

我正在寻找一种非对称密码,它具有非常短的输入导致输出非常短的特性。

.NET的标准RSACryptoService似乎为任何短明文输出至少128个字节,包括空明文。支持的最小BlockSize为128,唯一支持的模式为CBC。

完美的算法根本不会扩展明文,同时提供不对称属性。预期的输入大小为50-100字节,当然不会超过150。

4 个答案:

答案 0 :(得分:4)

使用椭圆曲线ElGamal encryption和变体,当然可以实现您感兴趣的尺寸目标。 Bouncycastle C# library是实施的一种选择。

因此,例如,通过使用NIST P-256曲线,您可以加密32字节的数据并获得64字节的结果。如果使用正确的填充,则可以加密较少的数据。我相信PGP曾经考虑过实施这个,但我不知道他们是否曾经这样做过。

答案 1 :(得分:1)

非对称密码需要长密钥,因为有许多非常强大的技术可以缩小密钥空间和输入空间。如果通过看到您发送了一条简短的加密消息,我知道明文也很短,那么进一步缩小了输入空间。 因此,如果存在这样的密码,那么根据定义发送短消息是不安全的。

答案 2 :(得分:1)

非对称密码非常慢。在实践中,除了最小的输入之外,在任何其他方面都无法使用。然而,对称密码可以非常快。

使用非对称密码的技术如下:

  • 使用加密强大的随机数生成器,创建一个密钥S
  • 使用对称算法(例如AES-256-CBC)和密钥S
  • 加密数据
  • 使用密钥对的非对称算法(例如S)和密钥RSA加密密钥A
  • 将加密形式的密钥S添加到加密邮件

换句话说,使用对称算法使用随机密钥对消息进行加密,然后使用非对称算法使用其中一个密钥对随机密钥进行加密。

您还必须考虑CBC模式的IV和填充,并且您必须考虑RSA的填充。它加起来。完美的算法需要IV和填充。鉴于你有一个IV,两个填充,以及随机对称密钥(加密)与消息(加密)一起存储,加密的东西将不得不占用空间。

答案 3 :(得分:-1)

我认为你不能得到明显小于密钥大小的密文,而非对称加密算法的密钥可能应该是几百到几千比特。你能不能将多个东西组合在一起并加密更大的块?