当我在C#中使用RSA实现许可证密钥机制时,我遇到了RSACryptoServiceProvider类,它被限制在最小的384位密钥大小。这个密钥长度直接影响到我创建的签名(==license密钥)。
是384位,一般是RSA的技术限制,或者可以用更短的密钥大小成功地实现RSA??。
阅读解释RSA的(德语)维基百科文章,他们在数学计算示例中使用非常小的素数。这似乎是可行的,所以我认为关键的大小应该小于20位.注意:我现在绝对不关心安全问题。那是另一个讨论。我只想得到正确的技术限制。
我知道堆栈溢出不应该被用来要求工具,但是如果您知道一个.NET RSA库有一个较低的限制,也许您只是想附带说明一下。
发布于 2014-03-27 06:59:52
如果您不关心安全性,那么是的,您可以实现密钥大小< 384位的RSA。虽然不推荐它是不安全的,但它可以工作。
在这个幻灯片中,Dan以一个拥有128个位私钥的例子为例。(他的其他课程也值得一看)。
发布于 2014-03-27 07:33:27
这并不是真正的技术限制,但缺点是,随着私钥大小的减少(因此降低了模数),块的大小也会减小。
因此,如果要签名/加密的数据作为块长度更大,则必须使用块链接模式,这与RSA组合在一起相当少见。
发布于 2014-04-02 21:42:49
从安全的角度来看,384位RSA可以在几个小时内破解,512位RSA可以在一两周内破解。如果您关注签名大小,则具有160位密钥的ECDSA将生成一个40字节签名。BLS可以做到一半,但是没有很好的库。
从“技术限制”的角度来看,RSA密钥的位数必须是您想要签名的值的两倍多。通常您对数据的散列进行签名,而不是直接对数据进行签名。
https://stackoverflow.com/questions/22674105
复制相似问题