java - 签名 validator 在检查自身时返回 false

标签 java security

我不明白为什么下面的代码在检查自身时返回false

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.Signature;
import java.security.SignatureException;
import java.security.NoSuchProviderException;
import java.security.*;


public class HelloWorld
{
  public static void main(String[] args)
  {
    KeyPair keyPair;
    String data = "test";

        try {

          KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("DSA");
          keyPairGen.initialize(512);
          keyPair =  keyPairGen.genKeyPair();

          Signature sign = Signature.getInstance("SHA1withDSA", "SUN");
          sign.initSign(keyPair.getPrivate());
          sign.update(data.getBytes());

          byte[] encoded = sign.sign();

          sign = Signature.getInstance("SHA1withDSA", "SUN");
          sign.initVerify(keyPair.getPublic());
          sign.update(encoded);
          System.out.println("Checked: "  + sign.verify(encoded)); // Testing with itself returns false????

        } catch (NoSuchAlgorithmException ex) {
            ex.printStackTrace();
        } catch (SignatureException ex) {
             ex.printStackTrace();
        } catch (NoSuchProviderException ex) {
             ex.printStackTrace();
        } catch (InvalidKeyException ex) {
            ex.printStackTrace();
        }
  }
}

私钥/公钥有问题? 我真的很困惑。

最佳答案

您更新了错误的内容,请更改此行

sign.update(encoded);

到此

sign.update(data.getBytes());

获得公钥后。

关于java - 签名 validator 在检查自身时返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36600474/

相关文章:

java - 在Eclipse中多次运行Java程序

php - 如何结合 "Remember me"特性创建安全 session ?

python - str() 在这里代表什么?

javascript - PhoneGap 源安全

java - 当我使用组时无法运行 testng xml

java - 小程序中 Class.forName( "Prohibited package name: java.util") 上的 "java.util..."

java - 从canvas java创建位图

java - 如何使模块 x 的第 3 方依赖项与其一起到达依赖于模块 x 的模块 y 的类路径?

asp.net - 可见的 GUID 是否存在安全风险?

java - Keystore.setKeyEntry() 中的 Certificate[] 链是什么意思以及如何从 JKS 或 PKCS12 获取该信息?