当我尝试使用此行签署一个jar时:
jarsigner -storetype pkcs12 -keystore cert_comodo.pfx MyJar.jar "le-01234567-0123-0123-0123-0123456789ab"
它提示我输入密码,一切正常。当我尝试用这个蚂蚁目标签名时:
<target name="sign_jars" depends="obfuscated_jar">
<signjar
keystore="cert_comodo.pfx"
alias="le-01234567-0123-0123-0123-0123456789ab"
storepass="A, pa$$." <Not my real password or alias, btw>
storetype="pkcs12">
<path>
<fileset dir="." includes="*.jar" />
</path>
</signjar>
</target>
我收到此错误:
[signjar] jarsigner error: java.lang.RuntimeException: keystore load: failed t
o decrypt safe contents entry: javax.crypto.BadPaddingException: Given final blo
ck not properly padded
如果我输错密码,会出现同样的错误。
我的密码中的$
字符是否被Ant修改了?有没有办法可以欺骗蚂蚁让我以交互方式输入密码?谢谢!
答案 0 :(得分:0)
问题很可能是由于ant
将$$
视为转义单$
,因此将实际密码字符串A, pa$
传递给jarsigner。如果问题仍然存在,请尝试将密码更改为A, pa$$$$
,以便转发2 $
。
Apache Ant™ Task Design Guidelines的其他一些文档:
... Ant 1.5在字符串中传递单个美元符号“$”; Ant 1.4和之前将剥离它。要获得此修复,我们首先必须编写测试套件以公开当前行为,然后更改某些内容,以便传递单个“$”,但为了向后兼容性,双“$$”被映射到“$”。