You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

获取Ed25519 KeyPairGenerator实例时应使用何种密钥长度?

Ed25519密钥对生成器初始化的合法keysize值

Ed25519是固定密钥长度的椭圆曲线签名算法,它仅支持256位的密钥长度,这是该算法的固有特性。

你只需要将keysize设为256即可解决报错问题,修正后的代码如下:

KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("Ed25519");
SecureRandom secureRandom = new SecureRandom();
int keysize = 256; // Ed25519唯一支持的密钥长度

keyPairGenerator.initialize(keysize, secureRandom);

KeyPair keyPair = keyPairGenerator.generateKeyPair();

另外,由于Ed25519没有其他可选的密钥长度,你也可以直接调用仅接收SecureRandom的initialize重载方法,无需指定密钥长度,底层会自动使用默认的256位长度,代码更简洁:

KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("Ed25519");
SecureRandom secureRandom = new SecureRandom();

keyPairGenerator.initialize(secureRandom); // 自动使用Ed25519的固定密钥长度

KeyPair keyPair = keyPairGenerator.generateKeyPair();

之前传入123报错,是因为Java的Ed25519实现只预定义了256位对应的参数,其他任何长度都会触发InvalidParameterException——从异常栈的EdDSAParameters.getBySize方法也能看出,系统会根据传入的size查找对应参数,找不到就抛出异常。

内容的提问来源于stack exchange,提问作者User8461

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 14:36:07