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贈送它將支持更大的鍵.所以我們可能需要等到明年.
總結
以上是生活随笔為你收集整理的dsa java_如何为Java生成2048位DSA密钥对?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大数据环境中资源优化配置策略研究(非原创
- 下一篇: 铁血战士mkv视频格式如何转换mp4