我正在尝试在settings.xml中加密服务器密码,并且在尝试部署工件时遇到此异常。
Caused by: javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:811)
at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:676)
at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:313)
at javax.crypto.Cipher.doFinal(Cipher.java:2087)
at org.sonatype.plexus.components.cipher.PBECipher.decrypt64(PBECipher.java:185)
... 18 more
这是摘录自xml
<server>
<id>server</id>
<username>username</username>
<password>{N8AF8BmQ5x8HZX/yrlrP1QiKNMEdoXWyBFZd/*zIabY=}</password>
</server>
我的主密码也发生了同样的异常,我只是按照这里的说明进行操作 https://maven.apache.org/guides/mini/guide-encryption.html 创建了一个类似于指南中的security-settings.xml,执行这两个命令并将加密的密码复制到相应的xml文件中。
mvn --encrypt-master-password <password>
mvn --encrypt-password <password>
答案 0 :(得分:6)
在极少数情况下,这是一个逃避问题,这可能发生在这里。请考虑重新生成masterpassword(使用-emp或--encrypt-master-password)和/或密码(使用-ep或--encrypt-password)。他们的价值观每次都会有所不同。
答案 1 :(得分:1)
或者偶然你复制粘贴了错误的参数:
--encrypt-master-password
并将输出放在settings.xml中而不是:
--encrypt-password
这让我陷入困境。 (Darn密码到期政策)
答案 2 :(得分:0)
遇到了同样的问题。解决了它:
1)使用我的密码周围的引号生成加密密码而不是引号(这似乎删除了+)
e.g。
mvn -emp "myPassword123"
和mvn -ep "myPassword123"
而不是mvn -emp myPassword123
和mvn -ep myPassword123
2)确保我的settings.xml和settings-security.xml在正确的目录中。 (我在maven安装目录中有我的settings.xml,在.m2目录中有settings-security.xml)
无论如何这对我有用
PS。我不得不在编辑设置文件后关闭终端,因为我认为它正在进行某种缓存
答案 3 :(得分:0)
让我们理解这里的问题。
mvn 加密密码用于确保安全访问受保护的存储库服务器(可能是 Nexus 或 JFrog)。
此访问权限基于 2 个设置。
<server>
<id>my.server</id>
<username>foo</username>
<password>{COQLCE6DU6GtcS5P=}</password>
</server>
要为这个文件设置密码,命令是
mvn --encrypt-password <password>
<settingsSecurity>
<master>{jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+9EF1iFQyJQ=}</master>
</settingsSecurity>
要获得此文件的密码,mvn 命令是
mvn --encrypt-master-password <password>
现在问题中提到的异常主要是不小心复制了settings-security.file中mvn --encrypt-password <password>
生成的密码而不是使用mvn --encrypt-master-password <password>
生成的密码的潜在副作用
所以仔细检查你的步骤,它应该可以解决问题。
有关详细参考,请访问 Maven - Password Encryption