为了账号安全,请及时绑定邮箱和手机立即绑定

Java 的 BouncyCastle 并不总是验证 OpenSSL ECDSA 签名

Java 的 BouncyCastle 并不总是验证 OpenSSL ECDSA 签名

SMILET 2021-08-25 16:44:20
我使用 OpenSSL(在 C++ 中)对文本进行签名,但是我的 Java 程序并不总是验证签名的消息(只有约 5 个得到验证)。有趣的是https://kjur.github.io/jsrsasign/sample/sample-ecdsa.html没有验证它们中的任何一个:曲线名称:secp256k1 签名算法:SHA256withECDSA私钥431313701ec60d303fa7d027d5f1579eaa57f0e870b23e3a25876e61bed2caa3公钥035bcefc4a6ca257e394e82c20027db2af368474afb8917273713644f11a7cecb3失败:text to sign=    pcax2727gRo8M6vf9Vjhr1JDrQ3rdPYu6xx81000pcax273z8kaV5Ugsiqz3tvWGo8Gg6sch6V4912341535867163229signature=    3044022061dff8e39f9324b0794ec2c58abda971898f694ca980baf3c2a4045a9048b441022054a2fb8ef3d383fd7eeb31425dba440e2fd2053778d4ab3725046385c7845cff0000成功:text to sign=    pcax2727gRo8M6vf9Vjhr1JDrQ3rdPYu6xx81000pcax273z8kaV5Ugsiqz3tvWGo8Gg6sch6V4912341535867122614signature=    3046022100f200d0fb9e86a16bd46ee2dd11f1840a436d0a5c6823001a516e975a44906fcf022100d062a60611fc0f21d81fa3140741c8b6e650fff33d2c48aef69a3a40d7c7b3ca爪哇private static final String SHA256WITH_ECDSA = "SHA256withECDSA";public static boolean isValidSignature(PublicKey pub, byte[] dataToVerify, byte[] signature) {    try {        Signature sign = Signature.getInstance(SHA256WITH_ECDSA, BouncyCastleProvider.PROVIDER_NAME);        sign.initVerify(pub);        sign.update(dataToVerify);        return sign.verify(signature);    } catch (Exception e) {        log.error("Error: " + e.getMessage());    }    return false;}
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 207 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信