PBEWithMD5AndDES
- это метод получения пароля пользователя и получения схемы шифрования, которая может использоваться для защиты дальнейших данных. Это не метод проверки пароля или его шифрования.
Если вас интересует только проверка пароля, расшифруйте пароли и замените их безопасным хешем, а в будущем сопоставьте его. Вам также понадобится служба напоминания пароля для службы сброса пароля.
Вопрос в том, откуда берется пароль, который вы передаете в алгоритм PBE? Если это фиксированный пароль для вашего приложения, то вам просто нужно заменить его и выполнить какое-то скользящее обновление. В качестве наблюдения, если вы храните зашифрованные данные в виде текста, либо в шестнадцатеричном, либо в кодировке base-64, есть символы, которые не могут появиться в текстовом выводе и которые, следовательно, можно использовать для обозначения более новой схемы шифрования. Например, символ :
не отображается в base-64. Это позволит вам определить, что было обновлено, а что нет.
Если пароли приходят от пользователя, то у каждого пользователя есть свой собственный шифр, полученный от пароля. В этом случае вы можете повторно зашифровать только те данные, которые были зашифрованы с помощью шифра пользователя, когда пользователь предоставит свой пароль.
Самая прямая замена будет по линии PBEWithSHA256And256BitAES
. К сожалению, это не поддерживается Java 6, поэтому вам понадобится сторонняя библиотека JCE, такая как Bouncy Castle . Надувной замок предлагает PBEWithSHA256And256BitAES-CBC-BC
, который будет подходящей заменой.
Процесс обновления шифра является сложной задачей. Все данные, которые были зашифрованы с помощью DES, могут быть расшифрованы только с помощью пароля пользователя. Я предполагаю, что у вас нет доступа к паролям. Это означает, что вы можете повторно зашифровать данные, только если человек, который знает пароль, предоставит их. У вас будет длительный период времени, когда ваша система содержит смесь шифров, поэтому вам нужен способ определения того, что конвертируется.
Если мы говорим о файлах, вы можете изменить суффикс файла или папку, в которой они хранятся. Если мы говорим о BLOB-объектах в базе данных, вы можете добавить дополнительный столбец в таблицу базы данных, чтобы сказать, что такое шифрование метод есть. Если ни один из этих вариантов невозможен, вы можете добавить некоторую форму заголовка к данным, чтобы указать, что они были зашифрованы по-новому. Это немного рискованно, поскольку ваши существующие данные не имеют заголовка, и есть внешняя вероятность, что он случайно совпадет с новым заголовком.
Также может быть целесообразно сохранить список пользователей, которым еще не были преобразованы их данные, чтобы вы могли предложить им преобразовать.