2015-10-22 6 views
0

Я пытаюсь изменить класс ECParameters в sun.security.ec. Мне нужно сделать это, чтобы заставить произвольные кривые работать, и я уже загрузил источник OpenJDK, отредактировал код и скомпилировал его снова.Как отредактировать .class в rt.jar для поддержки произвольных эллиптических кривых

Я распаковал свой текущий rt.jar и заменил все файлы в sun.security.ec собственными скомпилированными файлами. Все выглядит правильно, но когда я скомпилирую его снова и попытаюсь запустить netbeans, ничего не произойдет.

Кто-нибудь знает, что я сделал не так, и как я должен делать это правильно?

Редактировать: Я читал, что не рекомендуется редактировать эти классы, но этот конкретный класс даже имеет часть кода, который закомментирован.

// The code below is incomplete. 
//It is left as a starting point for a complete parsing implementation. 
+0

Почему бы вам не упаковать вашу реализацию в качестве патча и не отправить его в проект OpenJDK? Подробнее см. Http://openjdk.java.net/contribute/. – hendrik

+0

* но когда я скомпилирую его снова и попытаюсь запустить netbeans, ничего не произойдет. * - Вы имеете в виду: Netbeans не запускается? Или ваша программа не запускается? – hendrik

+0

Я не так разбираюсь в программировании на Java, но я чувствую себя .. Я на самом деле немного удивлен, что никто этого не сделал, так как криптография Elliptic Curve находится на подъеме. – Tosjo

ответ

0

Это не очень хорошая идея изменения скомпилированных классов JDK. Почему вы не используете «обычные» способы реализации вашего дела? Как вы уже упоминали, что вы не можете использовать прокомментированный код, который вы нашли, например. для реализации класса util.

+0

Я тоже могу попробовать, но я не уверен, как это сделать. Поскольку он появляется довольно сложно переопределить классы из rt.jar. Возможно, http://stackoverflow.com/a/30422178/5061639 может помочь мне с этим. – Tosjo

+0

Ну, переопределение ECParameters не будет работать, поскольку класс является окончательным. –

+0

Я также забыл упомянуть, что, например, при использовании Keytool, он также использует этот конкретный класс. Поэтому он не может обрабатывать произвольные кривые, это одна из причин, почему я предпочитаю редактировать сам класс. – Tosjo