【发布时间】: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);
publicKey 是JCERSAPublicKey 的一个实例
我在website 上读到此错误是由 证书 缺少正确的页眉和页脚标签(即 -----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE-----)引起的。 然而,我不是使用证书,而是公钥。查看我的公钥 PEM 文件,我可以看到它有适当的公钥头。
-----BEGIN PUBLIC KEY-----
...STUFF
...STUFF
...STUFF
...STUFF
...STUFF
...STUFF
-----END PUBLIC KEY-----
【问题讨论】:
-
该错误与密钥文件无关。
-
是的,我想通了,因此我的解决方案如下。感谢您尝试提供帮助。
标签: java cryptography rsa signature