Cipher.getInstance слишком медленный

У меня есть следующая строка кода, которая занимает менее секунды на моем компьютере (Windows 7) и около 20 секунд на сервере Redhat:

Cipher cipher = Cipher.getInstance(TRANSFORMATION);

где ПРЕОБРАЗОВАНИЕ определяется как:

private static final String TRANSFORMATION = "Blowfish/ECB/PKCS5Padding";

Что может быть причиной такого поведения?

Спасибо.


person restricteur    schedule 13.02.2014    source источник


Ответы (1)


Инициализация провайдера Bouncy Castle и, возможно, медленный /dev/random.

person Maarten Bodewes    schedule 13.02.2014
comment
Спасибо за быстрый ответ, но я не хочу, чтобы вас вводило в заблуждение упоминание о RedHat и Windows, потому что я также тестировал другой RedHat, и это тоже заняло меньше секунды. - person restricteur; 13.02.2014
comment
Другой процессор (например, более новый Intel) уже может изменить характеристики /dev/random, так что взгляните на это. - person Maarten Bodewes; 13.02.2014
comment
В случае, если /dev/random работает медленно, что я могу с этим поделать? - person restricteur; 13.02.2014
comment
Проверьте, какие приложения используют /dev/random, и по возможности переключите их на /dev/urandom. Или добавить устройства, которые генерируют энтропию для /dev/random. У меня была аналогичная проблема в Ubuntu с приложением Java. Я проверю, есть ли простое решение для Java. Кстати, вы можете легко проверить скорость /dev/random, просто прочитав из него байты (используя команду dd). Обратите внимание, что это должно быть немного медленным. - person Maarten Bodewes; 14.02.2014
comment
Это также происходит и в затмении. Что я могу сделать, чтобы ускорить его? - person Aman; 23.11.2017