与下面的构造函数代码混淆
使用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来生成证书。
我的问题是如何通过传递1024
和2048
答案 0 :(得分:2)
RSAKeyGenerationParameters
的第三个参数是
strength
- 我们想要生成的键的大小(以位为单位)。
2048位RSA加密在理论上比1024更难破解。但公共/私有对中的位数通常由您正在与之交互的系统定义。
答案 1 :(得分:2)
非对称键通常比相同长度的对称键更容易破解。非对称密钥越长,从公钥确定私钥所需的计算能力就越大。因此,密钥越长,加密就越强。
另请注意,使用RSA加密时,纯文本邮件不能超过密钥。因此,如果您使用的是1024位密钥,则只能加密最多128个字节的消息体(减去一些用于开销)或256个字节用于2048位密钥。
因此,非对称密钥越长,对称密钥或散列值可以在内部传递的时间越长。
生成更长的密钥对也需要更长的时间(需要更多的计算能力),但除非您动态创建密钥对,否则这通常不是问题。