我使用 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;}
添加回答
举报
0/150
提交
取消