取消签署已签名的jar

我正在使用充气城堡提供商进行AES加密。 我需要从bc和我的jar创建一个胖jar,但是一旦我这样做,我就会得到Algorithm not found例外。 是否有可能摆脱标志并创造出常规的jar子?

我的构建过程是……

  • 我将所有jar解压缩到我的构建目录中。
  • 然后删除META-INF目录
  • 编译我的申请
  • 使用antjar子

当我尝试使用时,我会发现错误

SecretKeyFactory.getInstance(算法);

算法是来自充气城堡的PBEWITHSHA256AND128BITAES-CBC-BC。

当您对jar文件进行签名时,新文件将添加到META-INF目录中,例如“MKSIGN.SF”和“MKSIGN.DSA”。 只需将它们从jar文件中删除(使用任何zip实用程序),然后将其保留为未签名。

要从jar文件中删除签名,请从中删除META-INF目录。 jar文件是一个zip文件,因此在Linux上你可以这样做:

 zip -d file.jar 'META-INF/*.SF' 'META-INF/*.RSA' 

您必须从签名的jar中删除签名文件。 将其扩展名更改为zip,删除签名文件,然后更改回jar。 从那时起,jar就不再是未签名的了。

我按照maven jar签名者插件中的代码删除了所有签名文件以及MANIFEST.MF中的校验和:

 find -type f \( \( -name "*.RSA" -o -name "*.SF" \) -o \( -name "*.EC" -o -name "*.DSA" \) \) -print0 | xargs -0 --no-run-if-empty rm -rf sed -i '/^Name: .*.class/Q' MANIFEST.MF 

我整理了一个perl脚本,我在生产中使用它来删除JAR签名。 只需将带有jar的文件夹作为参数传递。 这适用于linux。 它可能适用于cygwin,虽然我没有在Windows中测试它。

https://docs.google.com/document/d/1B1uEUIiuxh7WdPldD9rUun3COAefjczfdJTMWEecE1g/edit?usp=sharing