【问题标题】:Private key encryption in .NET 4.0 of a very large number.NET 4.0 中的大量私钥加密
【发布时间】:2014-01-21 02:17:16
【问题描述】:

在我的场景中,我想使用私钥加密一个非常大的数字 (10^27),然后再使用公钥对其进行解密。我遇到的问题是我希望加密文本的大小尽可能小。

我知道 .NET 支持公钥加密 (RSACryptoServiceProvider),但加密文本变得如此庞大。

将私钥视为公钥是否可行?

椭圆曲线密码学会产生更小的输出吗?

【问题讨论】:

  • 密文是非常大的数字,还是别的什么? RSA加密的结果 - 或者在你的情况下解密?您是否混淆了公共和私人,或者这是一个签名? - 将是一个介于 0 和模数之间的数字,并且可能没有明显的冗余,因此不可压缩。我认为 ECC 或 DSA 不会产生任何影响:情况相同。任何好的对称加密数据都无法与随机数据区分开来,因此也无法压缩:您必须在加密之前进行压缩。
  • @Rup,“大数字”是我要加密的!
  • @Rup 评论的第一部分是有道理的。 ECC 使用小得多的密钥大小,因此差异会相当大。也没有人谈论压缩。
  • @Artem,使用@ 确保 Rup 收到有关评论的通知...请说明您是否只想对给定代码保密,或者您是否想实现身份验证等等。

标签: c# .net encryption encryption-asymmetric elliptic-curve


【解决方案1】:

首先,如果您想实现机密性,您应该始终使用公钥而不是私钥进行加密。 RSA 加密未定义为使用私钥进行加密,结果可能会有所不同(尤其是应用的填充类型)。

对于直接 RSA 加密,加密消息的大小与模数相同。现在模数现在应该至少为 2048 位,而您的消息只有大约 (27/3)*10=90 位。所以 RSA 会有很大的开销,与使用的密钥无关。因此,使用 ECIES 可能会带来显着的好处。

【讨论】:

    猜你喜欢
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 2018-02-27
    • 2011-03-20
    相关资源
    最近更新 更多