在生成4096位RSA密钥对时,私钥和公钥都有精确的4096位,因此在二进制表示中不以0开头吗?
发布于 2015-07-19 22:33:13
初步而言,在RSA中,公钥是对(N, e),私钥是d。就像已经说过的,模数N的位大小就是4096所指的。N只与e一起构成部分公钥。不要求e是什么位大小。在RSA中安全加密的唯一要求是将消息m乘以e第四次方“封装模”,即m^e > N。因此,在实际应用中,使用了3 (2位)的e值。e最常见的当前值是65537 (17位),实际上,您看到的大多数SSL证书都具有此值,例如google.com。

d (私钥)的位大小没有设置,而且可能有很大的变化,因为它只是组phi(N)中e的乘法逆,其中phi是totient函数。在大多数情况下,它将比4096位小得多。
发布于 2015-07-19 17:26:47
期望零在BigInteger的MSB或LSB中发生。(二进制输出的两端)
我用C#编写了RSA代码,在BouncyCastle、BigInteger和.NET大整数中必须计算一个前导零。这两个图书馆的有趣之处在于,一个是大端,另一个是小端。
发布于 2015-07-19 19:39:20
4096指的是n的模数,公钥和私钥应该具有“相似”的位长,以提供预期的安全性。为p或q选择一个小得多的值允许n的因式分解(即通过蛮力强迫),因此可以用来检索密钥。
因此,这两个参数都必须有上述长度。
https://security.stackexchange.com/questions/94392
复制相似问题