当我在C#中使用RSA实现许可证密钥机制时,我遇到了RSACryptoServiceProvider class,它受限于最小384位密钥大小。该密钥长度对我创建的签名(==许可证密钥)有直接影响。RSA的最小密钥长度
384位是RSA的一般技术限制,还是有可能以更小的密钥大小成功实现RSA?
阅读解释RSA的(德语)维基百科文章,他们在数学计算示例中使用了非常小的素数。这似乎工作,所以我希望密钥大小比20位短...注:我绝对不在乎目前的安全。这是另一个讨论。我只想得到正确的技术限制。
我知道Stackoverflow不应该用来请求工具,但是如果你知道一个.NET RSA库有一个下限,也许你只是想提一下这个附注。
RSA背后的数学算法相当简单 - 也许它是您自己实现的一个选项?我不确定是否有任何库支持如此小的密钥大小,因为低于1024位的任何内容都是不安全的,此外,消息大小仅限于密钥的大小。 – ntoskrnl
您不能使用这种短键的典型衬垫。例如,带有SHA1的OAEP本身占用328位。 – CodesInChaos
如果您想要较短的签名,请考虑DSA和类似的算法。一个320位DSA签名价格昂贵,320位RSA密钥可能在一台PC上被破坏。对于更小的签名(DSA的一半大小),您可以使用BLS方案,但实施起来有点棘手。 – CodesInChaos