dsa java_如何为Java生成2048位DSA密钥对?

我尝试了以下方法来生成具有2048位密钥长度的DSA私有(和公共)密钥:

通过keytool

keytool -genkeypair -alias MyKeyPair -keyalg DSA -keysize 2048 -validity 365 -keystore MyKeyStore.ks

导致:

keytool error: java.lang.IllegalArgumentException: Modulus size must range from 512

to 1024 and be a multiple of 64

通过代码

KeyPairGenerator keyGen = KeyPairGenerator.getInstance(keyAlgorithm,"BC");

keyGen.initialize(numBits);

导致:

Exception in thread "main" java.security.InvalidParameterException: strength must be from 512 - 1024 and a multiple of 64

at org.bouncycastle.jcajce.provider.asymmetric.dsa.KeyPairGeneratorSpi.initialize(Unknown Source)

at java.security.KeyPairGenerator.initialize(KeyPairGenerator.java:340)

上面的例子使用了Bouncy Castle的实现,因为我读到的地方应该支持2048位的DSA密钥.我也尝试了具有相同错误的默认值.

我安装了(JCE)Unlimited Strength Jurisdiction Policy Files.

根据此输出,您可能希望有大键:

System.out.println("DSA Max key length: " + Cipher.getMaxAllowedKeyLength("DSA"));

DSA Max key length: 2147483647

但是,如果您在JCE Providers Docs中选择了Keysize限制,则1024位是最大值.

谁可以判断Java 7中是否支持2048位私钥?

或者,如果有另一种方法来创建此大小的密钥并将其导入Java密钥库?

Java 8 API赠送它将支持更大的键.所以我们可能需要等到明年.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值