Не подписывать подписанную банку

Я использую искуственный поставщик замка для шифрования AES. Мне нужно создать толстую банку из bc и моей банки, но как только я это сделаю, я получаю исключение Алгоритма. Можно ли избавиться от знака и создать из него обычную банку?

Мой процесс сборки...

  • я распакуйте все банки в мой каталог сборки.
  • затем удалите каталог META-INF
  • скомпилировать мое приложение
  • с помощью ant

iget ошибка, когда я пытаюсь использовать

SecretKeyFactory.getInstance(алгоритм);

алгоритм PBEWITHSHA256AND128BITAES-CBC-BC от бодрящего замка.

Ответ 1

Чтобы удалить подпись из файла jar, удалите из нее каталог META-INF. Файл jar - это zip файл, поэтому на Linux вы можете сделать это:

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

Ответ 2

Когда вы подписываете файл jar, новые файлы добавляются в каталог META-INF, например. "MKSIGN.SF" и "MKSIGN.DSA". Просто удалите их из файла jar (с любой утилитой zip), и у вас есть без знака.

Ответ 3

Вам нужно удалить файлы подписи из подписанного банку. Измените его расширение на zip, удалите файлы подписи и вернитесь в jar. Поскольку теперь эта jar больше не является неподписанной.

Ответ 4

Я следил за кодом из плагина подписчика maven и удалял все файлы подписи, а также контрольные суммы из 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

Ответ 5

Вы можете столкнуться с определенной проблемой с банками Bouncy Castle. Bouncy Castle реализует интерфейс провайдера криптографических услуг и, как таковой, может использовать метод самопроверки, представленный в технической документации по Java.

В случае с Bouncy Castle техника "толстой банки" может оказаться невозможной. Вы могли бы использовать альтернативный подход к загрузке классов, который бы загружал неповрежденные надувные замки изнутри вашего собственного jar (используя синтаксис jar://path/to/jar!/Path/inside/jar с URLClassLoader), но я не пробовал это и мое не подойдет для ваших нужд.

Ответ 6

Я собрал perl script, который я использую в производстве для удаления подписей JAR. Просто передайте папку с баночками в качестве аргумента. Это работает в Linux. Он может работать с cygwin, хотя я не тестировал его в окнах.

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