【问题标题】:Signature failed to verify with SHA1withDSA使用 SHA1withDSA 验证签名失败
【发布时间】:2020-03-12 22:46:29
【问题描述】:

我写了一个简单的符号代码。这个简单的签名代码不会验证。 dsa.verify(digitalSignature) 返回错误。 为什么此验证失败? 应用服务器是 weblogic 12.2.1.4.0。

URL url  = Thread.currentThread().getContextClassLoader().getResource("sueprv.gsdk");
InputStream is = url.openStream();
byte[] pk = new byte[335];
int rd = (is.read(pk));

privateKey = createPrivateKey(pk);
signature.initSign(privateKey);
byte[] bytes = "this is a test".getBytes();
signature.update(bytes);
byte[] digitalSignature = signature.sign();

URL url1 = Thread.currentThread().getContextClassLoader().getResource("suepub.gsdk");
InputStream inputStream = url1.openStream();

pk = new byte[444];
rd = (inputStream.read(pk));

Signature dsa = Signature.getInstance("SHA1withDSA", "SUN");

dsa.initVerify(createPublicKey(pk));

dsa.update(bytes);
System.out.println(dsa.verify(digitalSignature));

【问题讨论】:

    标签: java weblogic digital-signature signature


    【解决方案1】:

    经过这么多调试,我从这部分代码中发现了问题:

    rd = (inputStream.read(pk));
    

    在代码中,我从 inputStream 中读取了固定大小为 444 的公钥,但在调试中我发现无法读取 3 个字节的公钥。所以这造成了麻烦,因此这个标志的验证失败了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-28
      • 2013-10-28
      • 2020-11-02
      • 2016-01-13
      • 2011-07-09
      • 1970-01-01
      相关资源
      最近更新 更多