在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