在BouncyCastle上实现带有数字签名算法的椭圆曲线(ECDSA)实现

我正在尝试实现ECDSA(椭圆曲线数字签名算法" title="数字签名算法">数字签名算法),但是在Java中找不到使用Bouncy

Castle的示例。我创建了密钥,但是我真的不知道我应该使用哪种功能来创建签名并进行验证。

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);

以上是 在BouncyCastle上实现带有数字签名算法的椭圆曲线(ECDSA)实现 的全部内容, 来源链接: utcz.com/qa/420664.html

回到顶部