我正在尝试实现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/

10-09 00:30