取消签署已签名的jar

时间:2009-08-18 05:33:19

标签: java jar jar-signing

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

我的构建过程是..

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

当我尝试使用

时,我发现错误

SecretKeyFactory.getInstance(算法);

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

6 个答案:

答案 0 :(得分:13)

要从jar文件中删除签名,请从中删除require('react-bootstrap-datetimepicker'); ... render: function() { return <DateTimeField />; } 目录。 jar文件是一个zip文件,所以在Linux上你可以这样做:

META-INF

答案 1 :(得分:11)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我按照maven jar signer插件中的代码删除了所有签名文件以及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

答案 4 :(得分:0)

您可能会遇到Bouncy Castle罐子的特定问题。有弹性的城堡实现了加密服务提供者接口,因此可能会使用technotes of Java's documentation中介绍的自我验证技术。

对于Bouncy Castle,可能无法使用“胖子”技术。您可以使用替代的类加载方法,该方法将从您自己的jar中加载完整的充气城堡jar(使用带有URLClassLoader的jar:// path / to / jar!/ path / within / jar语法),但我没有尝试过这和我不符合您的需求。

答案 5 :(得分:-1)

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

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