일부 암호화 코드의 문제를 해결하는 동안 이상한 스택 트레이스 계층을 보았습니다. orignal 문제를 해결했지만 이와 같은 스택 추적을 생성하는 방법이 궁금합니다. 누구나 나를 계몽시킬 수 있습니까?Java 암호화 공급자 - 이상한 스택 추적
stacktrace를 그대로 복사하여 붙여 넣을 수 없습니다. 독점적 인 코드를 노출시킬 수있는 프레임을 삭제해야합니다.
businesscode.BusinessException: Failed while generating session key
at businesscode.businessthing.BusinessMethod(BusinessApp.java:NN)
... NN more
Caused by: java.security.NoSuchProviderException: JCE cannot authenticate the provider XXX
at javax.crypto.SunJCE_b.a(DashoA13*..)
at javax.crypto.KeyGenerator.getInstance(DashoA13*..)
at businesslib.generateKey(BusinessLib.java:NN)
... NN more
Caused by: javax.util.jar.JarException: Cannot parse X.jar
at javax.crypto.SunJCE_c.a(DashoA13*..)
at javax.crypto.SunJCE_b.b(DashoA13*..)
at javax.crypto.SunJCE_b.a(DashoA13*..)
... 25 more
이유 및 B (SunJCE_c.a, SunJCE_b.b) DashoA13 * 같은파일 및/광고 정보 등 메소드 이름?
64 비트 Linux 및 32 비트 Windows에서 실행되는 Oracle Java 6 32 비트.
아마도 런타임 최적화로 인해 일부 정보를 사용할 수 없기 때문일 수 있습니다. 아니면 일부 고의적 인 난독 화? JNI?
이 문제의 원인은 제 3 자 암호화 공급자가 jar 파일에 잘못 패키지되었습니다.
편집 원래 문제 (NoSuchProviderException: JCE cannot authenticate the provider...
)는 원래의 jar에서 암호화 공급자 클래스를 추출한 순진한 빌드 프로세스로 인해 생성되었으며 새 서명 된 원시 jar로 다시 패키지되었습니다. 그러나 필요한 서명 정보는 없습니다. Siva와 Owlstead에게 서명 한 항아리를 상기시켜 주신 덕분에 :)
.jar 파일에 서명이 포함되어 있지 않으면 OpenJDK/JRE에서 실행할 수 있지만 Oracle JDK/JRE에서는 실행할 수 없습니다. –
고마워, 올빼미.무슨 일이 있었는지는 순진한 도구가 (서명 된, 유효한) 공급자 jar에서 모든 클래스를 추출하여 원래의 META-INF /에서 모든 정보를 제외하고 새로운 항아리에 패키지했습니다. 난독 화에 대한 귀하의 확인은 제가 원했던 것입니다. – Ishan
제 답장에 세 번째 이유가 추가되었습니다. 문제를 발견했기 때문에 기꺼이 받아 들여 주셔서 감사합니다. –