为什么我的 EC DSA 代码返回 false 以进行验证?

问题描述

我正在使用 java.security 库来进行椭圆曲线数字签名。 我没有收到语法错误或任何异常错误。

代码基本上创建了公钥和私钥。然后我通过创建一个字符串的签名来测试它,并使用相同的字符串进行验证。然而,结果是假的,但它应该是真的。

我不知道我哪里出错了。任何反馈表示赞赏。

代码如下:

import java.security.*;
import java.security.spec.ECGenParameterSpec;

public class ECTests {
    static PrivateKey privatekey;
    static PublicKey publickey;

    public static void main(String[] args) throws Exception {
        generateKeyPair();

        String strTest = "Hello World! This is a test";

        byte[] sign = generateSignature(privatekey,strTest.getBytes());
        boolean isSignValid = verifySignature(publickey,strTest.getBytes(),sign);

        System.out.println(isSignValid);
    }

    public static KeyPair generateKeyPair() throws GeneralSecurityException {
        KeyPairGenerator keyPair = KeyPairGenerator.getInstance("EC");
        ECGenParameterSpec ec = new ECGenParameterSpec("secp256r1");
        keyPair.initialize(ec,new SecureRandom());

        privatekey = keyPair.genKeyPair().getPrivate();
        publickey = keyPair.genKeyPair().getPublic();

        return keyPair.generateKeyPair();
    }

    public static byte[] generateSignature(PrivateKey ecPrivate,byte[] input) throws GeneralSecurityException {
        Signature signature = Signature.getInstance("SHA256withECDSA");
        signature.initSign(ecPrivate,new SecureRandom());
        signature.update(input);
        return signature.sign();
    }

    public static boolean verifySignature(PublicKey ecPublic,byte[] input,byte[] encSignature) throws GeneralSecurityException {
        Signature signature = Signature.getInstance("SHA256withECDSA");
        signature.initVerify(ecPublic);
        signature.update(input);
        boolean state = signature.verify(encSignature);
        return state;
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...