2011-02-16 5 views
0

메시지의 서명을 확인하려고하는데 다음과 같은 예외가 발생합니다. 여기 서명 검증 중, 예외가 발생했습니다 : java.io.IOException : 시퀀스 태그 오류

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 

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

publicKey 나는이 오류가 올바른 헤더를 누락 인증서에 의해 발생되고 있음이 website에서 읽을 JCERSAPublicKey

의 인스턴스 내 자바 코드이며, 바닥 글 태그 (예 : -----BEGIN CERTIFICATE----------END CERTIFICATE-----). 그러나 인 경우 인증서를 사용하는 이 아닌이지만 공개 키입니다. 내 공개 키 PEM 파일을 보면 공개 키에 적합한 헤더가 있음을 알 수 있습니다.

-----BEGIN PUBLIC KEY----- 
...STUFF 
...STUFF 
...STUFF 
...STUFF 
...STUFF 
...STUFF 
-----END PUBLIC KEY----- 
+0

이 오류는 키 파일과는 아무런 관련이 없습니다. –

+0

그래, 나는 그것을 알아 냈다. 따라서 아래의 나의 해결책. 그래도 도와 ​​줘서 고마워. – John

답변

1

나는 약간의 차이가 있는데, 이는 자바와 함께 제공 될 것이라고 생각했기 때문이지만, 서명 알고리즘을위한 서비스 제공자는 존재하지 않는다. BouncyCastle을 다운로드하고 공급자로 추가 한 후에 코드가 더 이상 예외를 throw하지 않습니다.

+0

수 없습니다. 동시에 여러 항목을 변경하고 마침내 무언가가 작동하므로 마지막으로 수행 한 것으로 간주됩니다. –

+0

무엇? 어떻게이 아이디어를 생각해 냈습니까? "여러 번 동시에 변화하는 것"? – John

+0

그 대신에 "NoSuchAlgorithmException"을 던지겠습니까? – James

관련 문제