Генерация хэша пароля в Java, как openssl passwd -1 - PullRequest
4 голосов
/ 18 января 2010

Есть ли в Java простой способ генерировать хэши паролей в той же форме, что и "openssl passwd -1".

Пример:

# openssl passwd -1 test
$1$Gt24/BL6$E4ZsrluohHFxtcdqCH7jo.

Я ищу чистое решение Java, которое не вызывает openssl или любую другую внешнюю программу.

Спасибо Раффаэль

Ответы [ 3 ]

3 голосов
/ 18 января 2010

Документы openssl описывают опцию -1 как: «Использовать алгоритм паролей BSD на основе MD5 1».

Jasypt является библиотекой java cryptogrqphy, как и jBCrypt . Jasypt немного сложнее, но более настраиваемый.

Я не так много знаю о крипто, но я предполагаю, что пароль, сгенерированный openssl, ломается как:
$1$ - указывает, что это было сгенерировано с использованием схемы MD5
Gt24/BL6 - 8-байтовая соль
$ - разделитель
E4ZsrluohHFxtcdqCH7jo. - хеш

так что похоже на BasicPasswordEncryptor Джасепта может быть то, что вы хотите -

0 голосов
/ 18 января 2010

Вы можете найти исходный код для версии языка C здесь . Преобразовать его в чистую Java должно быть просто.

0 голосов
/ 18 января 2010

Может, как-то так?

MessageDigest md = null;
md = MessageDigest.getInstance("SHA");
md.update(pPassword.getBytes("UTF-8"));
byte raw[] = md.digest();
String hash = BASE64Encoder.encodeBuffer(raw);

Исходный код Java BASE64Encoder находится в сети.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...