ed25519 签名 java 曲线不支持
我正在尝试使用 Java 中的 ed25519 曲线,使用 Bouncy Castle 库来制作 ECDSA 签名。 我已成功生成密钥并能够根据私钥获取公钥。但是,我正在努力用它签署一些数据。 当我尝试这样做时,它显示java.security.SignatureException:不支持曲线:java.security.spec.ECParameterSpec@223191a6
。我想这是因为我使用 CustomNamedCurves
初始化了曲线参数。有人知道如何进行这项工作吗?
// Bouncy Castle Provider
Security.addProvider(new BouncyCastleProvider());
// Secure random
SecureRandom secureRandom = new SecureRandom();
// Key generator
X9ECParameters curveParams = CustomNamedCurves.getByName("Curve25519");
ECParameterSpec ecSpec = new ECParameterSpec(curveParams.getCurve(), curveParams.getG(), curveParams.getN(), curveParams.getH(), curveParams.getSeed());
KeyPairGenerator ecKeyGen = KeyPairGenerator.getInstance("EC", "BC");
ecKeyGen.initialize(ecSpec);
ecKeyGen.initialize(ecSpec, secureRandom);
ecKeyGen.initialize(ecSpec);
// Signer
Signature ecdsaSign = Signature.getInstance("SHA256withECDSA");
// Generate Key pair
var keypair = ecKeyGen.generateKeyPair();
var pub = keypair.getPublic();
var priv = keypair.getPrivate();
// Signature
byte[] data = "Some data".getBytes();
ecdsaSign.initSign(priv);
ecdsaSign.update(data);
// java.security.SignatureException: Curve not supported: java.security.spec.ECParameterSpec@6069db5
byte[] sig = ecdsaSign.sign();
我正在使用 java 17.0.1
和 org.bouncycastle:bcprov-jdk15on:1.70
I'm trying to make a ECDSA signature using the ed25519 curve in Java, using the Bouncy Castle library.
I have managed to generate the keys and to be able to obtain the public key given the private key. However, I'm struggling to sign some data with it.
When I try to do so it says java.security.SignatureException: Curve not supported: java.security.spec.ECParameterSpec@223191a6
. I suppose that's because I initialized the curve parameters using CustomNamedCurves
. Does somebody know how to make this work?
// Bouncy Castle Provider
Security.addProvider(new BouncyCastleProvider());
// Secure random
SecureRandom secureRandom = new SecureRandom();
// Key generator
X9ECParameters curveParams = CustomNamedCurves.getByName("Curve25519");
ECParameterSpec ecSpec = new ECParameterSpec(curveParams.getCurve(), curveParams.getG(), curveParams.getN(), curveParams.getH(), curveParams.getSeed());
KeyPairGenerator ecKeyGen = KeyPairGenerator.getInstance("EC", "BC");
ecKeyGen.initialize(ecSpec);
ecKeyGen.initialize(ecSpec, secureRandom);
ecKeyGen.initialize(ecSpec);
// Signer
Signature ecdsaSign = Signature.getInstance("SHA256withECDSA");
// Generate Key pair
var keypair = ecKeyGen.generateKeyPair();
var pub = keypair.getPublic();
var priv = keypair.getPrivate();
// Signature
byte[] data = "Some data".getBytes();
ecdsaSign.initSign(priv);
ecdsaSign.update(data);
// java.security.SignatureException: Curve not supported: java.security.spec.ECParameterSpec@6069db5
byte[] sig = ecdsaSign.sign();
I'm using java 17.0.1
and org.bouncycastle:bcprov-jdk15on:1.70
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论