Java 生成数字证书时通过1024和2048之间的差异

Java 生成数字证书时通过1024和2048之间的差异,java,security,encryption,cryptography,digital-signature,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 RSAKeyPa

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

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));
下面是从库生成证书的步骤

我的问题是,传递
1024
2048
对公钥和私钥有什么影响

 RSAKeyPairGenerator gen = new RSAKeyPairGenerator();
 gen.init(new RSAKeyGenerationParameters(BigInteger.valueOf(3),
                                new SecureRandom(), 2048, 80));
强度
-我们要生产的密钥的大小(以位为单位)

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

    • 的第三个参数是

      强度
      -我们要生产的密钥的大小(以位为单位)

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


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

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

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


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

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

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

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


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

      2^1024倍的难断性,这是一个相当大的数字。我所处理的CA不再接受1024位密钥。是的,RSAKeyGenerationParameters类的文档有点弱(请原谅双关语),但是对超级KeyGenerationParameters类的构造函数的描述说明了这一点:
      使用随机性源**和强度(以位为单位)初始化生成器**.
      所以用简单的英语说:它指定了钥匙的长度。@ppeterka66感谢您查看这个。两个键的长度相同。但我能看出钥匙的区别ᴜʀᴇsʜᴀᴛᴛᴀ EJP是对的,今天的问题是2048或4096。。。(甚至有人说1024位加密已经死了…@EJP破解起来也不是原来的2^1024倍。这“仅仅”是它的几十亿倍。与对称加密不同,RSA的安全性不会像2^n.2^1024倍那样难以破解,这是一个相当大的数字。我所处理的CA不再接受1024位密钥。是的,RSAKeyGenerationParameters类的文档有点弱(请原谅双关语),但是对超级KeyGenerationParameters类的构造函数的描述说明了这一点:
      使用随机性源**和强度(以位为单位)初始化生成器**.
      所以用简单的英语说:它指定了钥匙的长度。@ppeterka66感谢您查看这个。两个键的长度相同。但我能看出钥匙的区别ᴜʀᴇsʜᴀᴛᴛᴀ EJP是对的,今天的问题是2048或4096。。。(甚至有人说1024位加密已经死了…@EJP破解起来也不是原来的2^1024倍。这“仅仅”是它的几十亿倍。与对称加密不同,RSA的安全性不像2^n那样可扩展。与128位和256位AES之间的差异不同,RSA-1024和RSA-2048之间的差异不仅仅是理论上的。RSA-1024的计算能力是大型攻击者(如NSA)可以承受的。与128位和256位AES之间的差异不同,RSA-1024和RSA-2048之间的差异不仅仅是理论上的。RSA-1024的计算能力超出了大型攻击者(如NSA)的承受能力范围。非对称密钥的大小通常对RSA加密并不重要,因为混合加密是标准。哈希值也是如此,即使是SHA-512也可以很容易地放入由RSA 1024公钥生成的签名中。因此,除了安全性之外,密钥的大小应该不会太重要。@owlstead,当然,SHA-512散列值(512位)将适合RSA 1024位密码,但是人们使用非对称密钥除了签名之外还可以做各种有趣的事情,这种限制似乎并不广为人知。非对称密钥的大小对于RSA加密通常并不重要,因为混合加密是标准。哈希值也是如此,即使是SHA-512也可以很容易地放入由RSA 1024公钥生成的签名中。因此,除了安全性之外,密钥的大小应该不会太重要。@owlstead,当然,SHA-512散列值(512位)将适合RSA 1024位密码,但是人们使用非对称密钥做各种有趣的事情,除了签名之外,这一限制似乎并不为人所知。