2009-08-18 288 views
8

我使用彈性城堡提供程序進行AES加密。我需要從BC和我的jar中創建一個胖罐子,但只要我這樣做,我得到算法沒有發現異常。是否有可能擺脫標誌,並創建一個常規的罐子?未簽名簽名的jar

我的構建過程是..

  • 我解壓在所有罐子我的build目錄。
  • 然後刪除META-INF目錄
  • 編譯我的應用程序使用它螞蟻

的iget錯誤

  • 罐子當我嘗試使用

    SecretKeyFactory.getInstance(算法);

    算法是PBEWITHSHA256AND128BITAES-CBC-BC from bouncy castle。

  • +0

    沒有足夠的信息。 *確切的*你什麼時候得到錯誤? *確切*錯誤信息是什麼? Martin對SF/DSA文件是正確的,此外,您還可能需要從MANIFEST.MF中刪除摘要。完全刪除META-INF目錄並不是一個好主意(不確定它是否是一個沒有清單的有效JAR) – 2009-08-18 08:09:46

    +0

    請關閉您的問題 – 2011-03-05 11:17:32

    回答

    9

    當您簽署jar文件時,會將新文件添加到META-INF目錄中,例如, 「MKSIGN.SF」和「MKSIGN.DSA」。只需將它們從jar文件中刪除(使用任何zip實用程序),並且它沒有簽名。

    +0

    我完全刪除了META-INF目錄,仍然沒有算法異常 – 2009-08-18 06:04:22

    +3

    這不實用。當你的證書到期時,你需要重新簽署這個「lib」文件夾中的40個jar文件夾,這樣做是一件痛苦的事情。 – 2013-10-14 20:47:22

    +0

    cherio,這仍然是答案,如果你有40個未簽名的話,你可以以編程方式自動化它。但是,不要重新簽署一個jar來簽署一個不同的目錄來避免這個問題。 – jzd 2013-10-17 14:42:22

    0

    您必須從簽名的jar中刪除簽名文件。將其擴展名更改爲zip,刪除簽名文件並將其更改回jar。從現在開始,該jar不再未簽名。

    6

    要從JAR文件中刪除簽名,從中取出META-INF目錄。一個jar文件是一個zip文件,所以在Linux上你可以這樣做:

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

    太棒了 - 正是我需要的!如果有多個文件要取消簽名,可以使用'for in in * .jar;做zip -d「$ i」'META-INF/*。SF''META-INF/* .RSA'; done' ... – tohuwawohu 2016-01-25 09:35:34