Набор Java-шифров - программирование

Набор Java-шифров

Я пытаюсь выработать порядок возврата списков шифрования с помощью SSLSocketFactory.getSupportedCipherSuites() - похоже, он отличается от Java 1.6 и Java 1.7.

Я думал, что это будет легко определить, но столкнулись с несколькими проблемами. Во-первых, это код, который я использую:

SSLContext context = SSLContext.getDefault();
SSLSocketFactory sf = context.getSocketFactory();
String[] cipherSuites = sf.getSupportedCipherSuites();

Довольно прямо (поправьте меня, если я сделал что-то глупое). Итак, я подумал (используя eclipse), что могу войти в метод getSupportedCipherSuites(), но, похоже, исходный код этого не делает (есть ли причина для этого?). Я нашел класс в jsse.jar и декомпилировал его, используя JD-Eclipse. Это, однако, дает мне абстрактный класс, и я не смог увидеть конкретную реализацию абстрактного класса (я обнаружил, что класс может быть задан с использованием свойства "ssl.SocketFactory.provider", но это не было указанный в java.security). Я также не смог определить, как включить вход в систему, используя свойство javax.net.debug(это исчезает в нативном методе).

Может ли кто-нибудь указать, где я ошибаюсь?

4b9b3361

Ответ 1

Список поддерживаемых (и включенных) наборов шифров доступен в документации поставщика SunJSSE: для Java 6 и для Java 7. Порядок списка действительно отличается.

Я должен признать, что я никогда не обращал внимания на порядок в списке поддерживаемых наборов шифров. Тот, который имеет значение, - это список разрешенных списков * enabled.

Если вас интересует сам код, вы должны найти его в sun.security.ssl.SSLContextImpl и sun.security.ssl.CipherSuite. Обратите внимание, что эти классы являются частью реализации Sun JSSE, а не частью публичного Java API.

Что касается отладки, вы найдете необходимые параметры в разделе Отладка Справочного руководства JSSE.