我试图验证消息的签名,但我正在抛出以下异常。
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-----