我正在尝试实现ECDSA(椭圆曲线数字签名算法),但是在Java中找不到使用Bouncy CaSTLe的示例。我创建了 key ,但是我真的不知道我应该使用哪种功能来创建签名并进行验证。
public static KeyPair GenerateKeys()
throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException
{
ECParameterSpec ecSpec = ECNamedCurveTable.getParameterSpec("B-571");
KeyPairGenerator g = KeyPairGenerator.getInstance("ECDSA", "BC");
g.initialize(ecSpec, new SecureRandom());
return g.generateKeyPair();
}
最佳答案
owlstead是正确的。要详细说明,您可以执行以下操作:
KeyPair pair = GenerateKeys();
Signature ecdsaSign = Signature.getInstance("SHA256withECDSA", "BC");
ecdsaSign.initSign(pair.getPrivate());
ecdsaSign.update(plaintext.getBytes("UTF-8"));
byte[] signature = ecdsaSign.sign();
并验证:
Signature ecdsaVerify = Signature.getInstance("SHA256withECDSA", "BC");
ecdsaVerify.initVerify(pair.getPublic());
ecdsaVerify.update(plaintext.getBytes("UTF-8"));
boolean result = ecdsaVerify.verify(signature);
关于java - 在BouncyCaSTLe上实现带有数字签名算法的椭圆曲线(ECDSA)实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18244630/