Maven密码加密BadPaddingException

时间:2015-07-20 20:24:15

标签: maven encryption

我正在尝试在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>

4 个答案:

答案 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 myPassword123mvn -ep myPassword123

2)确保我的settings.xml和settings-security.xml在正确的目录中。 (我在maven安装目录中有我的settings.xml,在.m2目录中有settings-security.xml)

无论如何这对我有用

PS。我不得不在编辑设置文件后关闭终端,因为我认为它正在进行某种缓存

答案 3 :(得分:0)

让我们理解这里的问题。

mvn 加密密码用于确保安全访问受保护的存储库服务器(可能是 Nexus 或 JFrog)。

此访问权限基于 2 个设置。

  1. /conf/settings.xml 中的常用设置将定义存储库列表和所需的用户名密码。一个典型的条目如下所示

<server>
      <id>my.server</id>
      <username>foo</username>
      <password>{COQLCE6DU6GtcS5P=}</password>
 </server>

要为这个文件设置密码,命令是

mvn --encrypt-password <password>
  1. 本地存储库路径中可用的用户特定设置(可以在 /conf/settings.xml 中找到)类似于 C:/Users/user/.m2/settings-security.xml,如下所示

<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