我有一个电子邮件验证系统,它发送一个加密链接供用户点击。我有一个用户告诉我它不起作用,我发现了一个非常奇怪的错误,我无法解释。
这是一个可以正常工作的本地 URL
http://localhost/cypher.action?cypher=TphMFuv%2FwcsgLThnU5cWInJFaZPMHeDFFL%2FRRPbbV70%3D
这是不起作用的远程 URL
http://remotehost/cypher.action?cypher=TphMFuv%2FwcsgLThnU5cWInJFaZPMHeDFFL%2FRRPbbV70%3D
我的应用程序在 tomcat 服务器上运行 struts2,但我认为这并不重要。在远程请求中,变量 cypher 为空。我不明白为什么。它运行完全相同的代码
干杯
克里斯
更新
事实证明,糟糕的日志记录隐藏了真正的问题。问题是在服务器上它得到一个 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 中遇到了 Exception: "Given final block not proper padded",但它在 Windows 中有效
Linux上的一些编码差异?