生成数字证书时传递1024和2048之间的差异

时间:2013-10-10 07:53:56

标签: java security encryption cryptography digital-signature

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

使用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

对公钥和私钥产生什么影响?

2 个答案:

答案 0 :(得分:2)

RSAKeyGenerationParameters的第三个参数是

  

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

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

答案 1 :(得分:2)

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

另请注意,使用RSA加密时,纯文本邮件不能超过密钥。因此,如果您使用的是1024位密钥,则只能加密最多128个字节的消息体(减去一些用于开销)或256个字节用于2048位密钥。

因此,非对称密钥越长,对称密钥或散列值可以在内部传递的时间越长。

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