いくつかの暗号化コードのトラブルシューティング中に、スタックトレースの奇妙な階層を見ました。元の問題は解決しましたが、このようなスタックトレースをどのように生成できるかについて興味がありました。誰かが私を啓発できますか?
スタックトレースをそのままコピーして貼り付けることはできないことに注意してください。プロプライエタリコードを公開できるフレームを削除する必要があります。
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
aやb( SunJCE_c.a 、SunJCE_b.b)のようなメソッド名と、 DashoA13 *としてのファイル/行情報を使用するのはなぜですか?
Oracle Java 6 32ビット、64ビットLinuxおよび32ビットWindowsで実行。
これは、おそらくランタイムの最適化のために、一部の情報が利用できないことが原因である可能性がありますか?または、意図的な難読化ですか?JNI?
これを引き起こした問題は、サードパーティの暗号プロバイダーがjarファイルに正しくパッケージ化されていないことでした。
編集:元の問題(NoSuchProviderException: JCE cannot authenticate the provider...
)は、元のjarから暗号プロバイダークラスを抽出し、新しい元のjarに再パッケージ化した単純なビルドプロセスが原因でしたが、必要な署名情報はありませんでした。署名された瓶を思い出させてくれたSivaとowlsteadに感謝します:)