我尝试了以下方法来生成具有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密钥对?相关推荐

  1. Java 生成13位条形码 Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验码。

    package cn.zhang;import java.util.Scanner;public class Subject001 {/**生成13位条形码 Ean-13码规则:第十三位数字是前十二位 ...

  2. java 生成8位随机密码

    package com.fastone.www.javademo.randomtest;import java.util.Random;/*** @program: javademo* @descri ...

  3. JAVA生成20位LONG型UUID

    编者在开发过程中用postman测试接口,发现要求id为必填且不能含有英文字母,问了对面开发人员才知道需要自己生成20位Long型uuid,写法大概如下,在需要生成的部分调用这个类即可. packag ...

  4. java生成16位随机数_java中如何产生一个16位数字组成的随机字符串?谢谢各位了...

    展开全部 方法如下: Random ran=new random(); boolean flag=true; while(flag){ int a=ran.nextInt(99999999); int ...

  5. java生成8位的uuid_分布式系统全局唯一ID简介、特点、生成

    一.什么是分布式系统唯一ID 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识. 如在金融.电商.支付.等产品的系统中,数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息, ...

  6. java生成6位随机数

    生成6位随机数(不会是5位或者7位,仅只有6位): System.out.println((int)((Math.random()*9+1)*100000)); 同理,生成5位随机数: System. ...

  7. java怎样生成32位全是整形的主键_用java生成32位全球唯一的id编号

    GUID是一个128位长的数字,一般用16进制表示.算法的核心思想是结合机器的网卡.当地时间.一个随即数来生成GUID.从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义 ...

  8. java生成8位邀请码,邀请码生成器Java代码

    邀请码生成器,可根据邀请码反向算出用户id import java.util.Random; /** * 邀请码生成器,算法原理: * 1) 获取id: 1127738 * 2) 使用自定义进制转为: ...

  9. java生成32位流水号,Java生成流水号

    import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.Date; public cla ...

最新文章

  1. 为什么UI线程中创建Handler可以不传Looper?
  2. 图片像素、英寸、厘米之间的单位换算
  3. Quartz2D的内存管理
  4. JavaScript中的箭头函数
  5. 虚拟机拷贝数据到服务器,虚拟机文件拷到u盘上
  6. 游戏开发Camera之Cinematic Camera-深度
  7. python新手入门课_Python基础视频12集入门课程
  8. Keras学习---数据预处理篇
  9. Jersey客户端API调用REST风格的Web服务
  10. SQL Server BI Step by Step SSIS 5 --- 通过Email发送查询结果
  11. LINUX下载编译ccrtp(未成功)
  12. jflash合并bin文件及hex文件
  13. 爬虫-Scrapy(二) 爬取糗百笑话-单页
  14. PS给人物添加阴影和高光
  15. Unity HDR (高动态范围 )
  16. python模拟访问js_百度统计原理分析-利用PHP/Python实现模拟访问
  17. 量子信息技术(QIT)
  18. 如何在HTML中修改网站标题和图标?
  19. Linux GRO流程分析
  20. 多系统引导启动盘“完美解决”方案——Ventoy工具

热门文章

  1. 象棋里的天地炮与重炮
  2. 好听的歌曲单片机c语言程序,单片机C语言程序举例(三)
  3. 2021华为校园招聘算法题
  4. 谷歌浏览器不使用独立显卡
  5. git的GUI工具Sourcetree使用及命令行对比
  6. hello.java 运行的整个流程
  7. 打包安卓apk后的V1和V2签名
  8. 计算机代码rsi是什么意思,自编RSI指标
  9. 报错集-------docker中删除镜像时报错
  10. 哈工大软件构造2022笔记(持续更新----1)