【问题标题】:Trying to verify a signature, Exception thrown: java.io.IOException: Sequence tag error尝试验证签名,抛出异常:java.io.IOException: Sequence tag error
【发布时间】:2011-06-28 02:06:26
【问题描述】:

我正在尝试验证消息的签名,但出现以下异常。

Exception in thread "main" java.security.SignatureException: Signature encoding error
    at sun.security.rsa.RSASignature.engineVerify(RSASignature.java:185)
    at java.security.Signature$Delegate.engineVerify(Signature.java:1140)
    at java.security.Signature.verify(Signature.java:592)
    ... 4 more
Caused by: java.io.IOException: Sequence tag error
    at sun.security.util.DerInputStream.getSequence(DerInputStream.java:280)
    at sun.security.rsa.RSASignature.decodeSignature(RSASignature.java:209)
    at sun.security.rsa.RSASignature.engineVerify(RSASignature.java:174)
    ... 6 more

这是我的 Java 代码

Signature sig = Signature.getInstance("SHA1withRSA");
sig.initVerify(publicKey);
sig.update(message);
return sig.verify(signature);

publicKeyJCERSAPublicKey 的一个实例

我在website 上读到此错误是由 证书 缺少正确的页眉和页脚标签(即 -----BEGIN CERTIFICATE----------END CERTIFICATE-----)引起的。 然而,我不是使用证书,而是公钥。查看我的公钥 PEM 文件,我可以看到它有适当的公钥头。

-----BEGIN PUBLIC KEY-----
...STUFF
...STUFF
...STUFF
...STUFF
...STUFF
...STUFF
-----END PUBLIC KEY-----

【问题讨论】:

  • 该错误与密钥文件无关。
  • 是的,我想通了,因此我的解决方案如下。感谢您尝试提供帮助。

标签: java cryptography rsa signature


【解决方案1】:

有点奇怪,因为我认为这会随 Java 一起提供,但没有签名算法的服务提供者。我下载了 BouncyCastle,将其添加为提供程序后,代码不再抛出异常。

【讨论】:

  • 不可能,你同时改变了多个东西,最后一些东西起作用了,所以你把它归结为你做的最后一件事。
  • 什么?您是如何想出这个想法的:“您同时改变多个事物”?
  • 那不是会抛出“NoSuchAlgorithmException”吗?
  • @John 你能给我们看一个最终代码的例子吗?我对“将其添加为提供者”部分特别感兴趣。
猜你喜欢
  • 2014-02-22
  • 1970-01-01
  • 2011-11-23
  • 2015-07-16
  • 2013-04-09
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2016-05-05
相关资源
最近更新 更多