【发布时间】:2014-03-26 22:10:52
【问题描述】:
当我使用 RSA 在 C# 中实现许可证密钥机制时,我遇到了 RSACryptoServiceProvider class,它被限制为至少 384 位密钥大小。此密钥长度直接影响我创建的签名(==许可证密钥)。
一般来说 384 位是 RSA 的技术限制,还是可以用更短的密钥大小成功实现 RSA?
阅读解释 RSA 的(德语)*文章,他们在数学计算示例中使用了非常小的素数。这似乎可行,所以我希望密钥大小小于 20 位......注意:我现在绝对不关心安全性。那是另一个讨论。我只想弄清技术限制。
我知道 * 不应该被用来询问工具,但如果你知道 .NET RSA 库有一个下限,也许你只是想把它作为附注提及。
【问题讨论】:
-
RSA 背后的数学原理相当简单——也许可以自己实现它?我不确定是否有任何库支持如此小的密钥大小,因为低于 1024 位的任何内容都是不安全的,此外,消息大小仅限于密钥的大小。
-
您不能使用带有此类短键的典型填充。例如,带有 SHA1 的 OAEP 本身占用 328 位。
-
如果您想要更短的签名,请考虑 DSA 和类似算法。破解 320 位 DSA 签名的成本很高,可以在单台 PC 上破解 320 位 RSA 密钥。对于更小的签名(DSA 大小的一半),您可以使用 BLS 方案,但实现起来有点棘手。
标签: c# cryptography rsa