0

与下面的构造函数代码有点混淆

2048

 RSAKeyPairGenerator gen = new RSAKeyPairGenerator();
 gen.init(new RSAKeyGenerationParameters(BigInteger.valueOf(3),
                                new SecureRandom(), 2048, 80));

1024

 RSAKeyPairGenerator gen = new RSAKeyPairGenerator();
 gen.init(new RSAKeyGenerationParameters(BigInteger.valueOf(3),
                                new SecureRandom(), 1024, 80));

这是RSAKeyGenerationParameters,来自BouncyCastle库,用于生成证书。

我的问题是如何通过传递10242048

4

2 回答 2

2

非对称密钥通常比相同长度的对称密钥更容易破解。非对称密钥越长,从公钥中确定私钥所需的计算能力就越强。因此,密钥越长,加密越强。

另外,请注意,使用 RSA 加密,纯文本消息不能长于密钥。因此,如果您使用 1024 位密钥,则最多只能加密 128 字节的消息正文(减去一些开销),或者 256 字节的 2048 位密钥。

所以,非对称密钥越长,对称密钥或哈希值可以在里面传递的时间就越长。

生成更长的密钥对也需要更长的时间(需要更多的计算能力),但除非您动态创建密钥对,否则这通常不是问题。

于 2013-10-10T09:52:32.133 回答
2

第三个参数RSAKeyGenerationParameters

strength- 我们要生成的密钥的大小(以位为单位)。

理论上,2048 位 RSA 加密比 1024 更难破解。但公共/私有对中的位数通常由您与之交互的系统定义。

于 2013-10-10T07:59:47.177 回答