Weblogic部署异常:PaddingException:无法执行去填充操作:填充字节无效。

12

这个问题被提出(并回答)只是为了与SO社区分享一些知识。点击此处

我最近在我的Web应用程序中遇到了一个部署异常(在从SVN仓库接收一些更改后),错误信息如下:

< 错误 > < 部署程序 > ID为“1”的任务的ID为'1350377960779'。 错误为:'com.rsa.jsafe.JSAFE_PaddingException: Could not perform unpadding: invalid pad byte.' com.rsa.jsafe.JSAFE_PaddingException: Could not perform unpadding: invalid pad byte. at com.rsa.jsafe.c.a(Unknown Source) at com.rsa.jsafe.JSAFE_SymmetricCipher.decryptFinal(Unknown Source) at weblogic.security.internal.encryption.JSafeEncryptionServiceImpl.decryptBytes(JSafeEncryptionServiceImpl.java:124) at weblogic.security.internal.encryption.JSafeEncryptionServiceImpl.decryptString(JSafeEncryptionServiceImpl.java:184) at weblogic.security.internal.encryption.ClearOrEncryptedService.decrypt(ClearOrEncryptedService.java:96) 省略...详见日志文件 Caused By: com.rsa.jsafe.JSAFE_PaddingException: Could not perform unpadding: invalid pad byte.

3个回答

15

在谷歌搜索中没有找到有用的答案。检查从我的 SVN 存储库接收到的文件后,我发现一个 JDBC 应用资源已更改。

仔细检查 JDBC 资源,我发现它正在使用仅用于生产环境的 password-encrypted 属性。

<password-encrypted>{AES}some+very+long+encrypted+string</password-encrypted>

我注释掉了这个属性并使用了开发环境中使用的属性:

 <properties>
     <property>
        <name>user</name>
        <value>MY_USER</value>
     </property>
     <property>
        <name>password</name>
        <value>MY_PASS_IN_PLAIN_TEXT</value>
     </property>
  </properties>

那个方法完全可行。


6

我刚刚遇到了这个问题,解决方法很简单,只需要在连接池页面上保存时不输入密码。当然,这样会导致连接失败。然后再输入密码并再次保存。这样就不会出现Pad字节错误,并且可以成功连接。


1
尝试在WebLogic 12.1.3中使用此方法,虽然可以“保存”更改,但仍无法“激活更改”,仍然出现“PaddingException”。 - radimpe
1
@radimpe 你可能需要暂时移除目标,这样你就可以保存你的配置更改。 - yannicuLar
我简直不敢相信那个起作用了!感谢你帮我避免了一个奇怪的头疼。 - Xcalibur37
1
@yannicuLar,你的评论帮了我很多。干杯! - Kursad Gulseven

1
我点击了MaVRoSCy的回复,因为它有效。但是缺点是你的密码变得可见(在开发环境中可能不是问题)。
可以通过在weblogic实例中重新加密密码来解决密码加密问题。
要这样做,请转到您的weblogic域,例如:ORACLE_HOME\user_projects\domains\YOUR_DOMAIN 然后执行此命令:java weblogic.security.Encrypt YOUR_PASSWORD 这将输出类似于{AES}0gcupcB95gtlr6VYnT3TZK5PxiATDuIUe3kRKd3b/Ag=的内容。
这是您的weblogic实例的加密密码。
然后只需将其替换为datasource xml配置中的password-encrypted属性即可。
<password-encrypted>{AES}0gcupcB95gtlr6VYnT3TZK5PxiATDuIUe3kRKd3b/Ag=</password-encrypted>

1
注意。您可能会收到“错误:找不到或加载主类weblogic.security.Encrypt”的提示。 在这种情况下,进入bin文件夹并输入以下内容:. ./setDomainEnv.sh 请注意脚本名称前的圆点。当您按回车键时,您将回到您的域主目录。现在输入“java weblogic.security.Encrypt”,它就可以工作了。 - Abdullah Gheith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接