Шифрование на основе паролей принимает пароль, что и подразумевает термин. Пароли запускаются через функцию деривации ключей для получения фактического ключа. Поскольку KDF обычно строится из хэш-функции, пароль может иметь любую длину и содержать любые символы.
Пароли должны выполняться через KDF, потому что типичные пароли не содержат в достаточной степени энтропии, чтобы считаться защищенными от нападений грубой силы. KDF заменяет эту нехватку глубины «ключевого пространства» с выделением вычислительно дорогого ключа - следовательно, тысячи итераций. Недостатком является тот факт, что инициализация шифрования также является дорогостоящей.
Это компромисс, который стоит того, чтобы вместо сырых ключей требовались пароли. Однако в вашем случае было бы лучше использовать необработанный ключ. К сожалению, кажется, что библиотека Jasypt, которую вы используете, поддерживает только PBE.
Чтобы содержать не менее 256 бит энтропии (столько, сколько необработанный случайный 256-битный ключ), the password has to contain at least 43 random (case-sensitive) alphanumeric characters. Если вы выберете длинный пароль, вы можете уменьшить счетчик итераций до 1.
Мне кажется странным, что вам нужно все это продумать, даже если вы используете библиотеку, в которой вы должны быть способны использовать «без необходимости иметь глубокие знания о том, как работает криптография». Почему он раскрывает все уродливые детали, если пользователи не должны знать, что они собой представляют?
Если вы используете статический ключ, вы не должны использовать шифрование на основе пароля. Вместо этого просто создайте случайный ключ и сохраните его напрямую. – ntoskrnl
Спасибо, но немой вопрос, это ваше предложение, характерное для Jasypt? Потому что я не могу найти ничего в документах, которые покрывают шифрование текста без PBE. Если я пропустил это, и есть документы, касающиеся вашего предложения, можете ли вы указать мне их? – Philip
Это был общий комментарий. Я не знаком с Jasypt, но похоже, что он поддерживает только PBE, что немного странно. – ntoskrnl