ユーザーがクリックする暗号化されたリンクを送信する電子メール検証システムがあります。1 人のユーザーに、それが機能していないと言われたのですが、説明できない非常に奇妙なエラーが見つかりました。
これは正常に動作するローカル URL です
http://localhost/cypher.action?cypher=TphMFuv%2FwcsgLThnU5cWInJFaZPMHeDFFL%2FRRPbbV70%3D
これは機能しないリモート URL です
http://remotehost/cypher.action?cypher=TphMFuv%2FwcsgLThnU5cWInJFaZPMHeDFFL%2FRRPbbV70%3D
私のアプリケーションは tomcat サーバーで struts2 を実行していますが、それは問題ではないと思います。リモート要求では、変数 cypher は null です。理由がわかりません。まったく同じコードを実行しています
乾杯
クリス
アップデート
悪いロギングが本当の問題を隠していたことが判明しました。問題は、サーバー上で BadPaddingException が発生していることです。
javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.DESCipher.engineDoFinal(DashoA13*..)
at javax.crypto.Cipher.doFinal(DashoA13*..)
at service.DesEncrypterService.decrypt(DesEncrypterService.java:80)
at action.LoginAction.cypherLogin(LoginAction.java:93)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
なぜそれがローカルではなくサーバーで起こっているのかを調べるために
アップデート
この人がLinuxで例外:「与えられた最終ブロックが適切に埋め込まれていない」を持っているのと同様の問題のようですが 、Windowsでは機能します
Linux でのエンコーディングの違いはありますか?