как сгенерировать хэш, подобный htpasswd от apache, используя java

StackOverflow https://stackoverflow.com/questions/2469197

  •  20-09-2019
  •  | 
  •  

Вопрос

я использую "Принудительное шифрование пароля MD5" в htpasswd для генерации хэша, например '123', который я получаю:

используйте htpasswd:123 => $apr1$kaTbKaLO$ewJXRZAKpjaxK4thy2jOp/

используйте MD5-дайджест:123 => 202cb962ac59075b964b07152d234b70

пожалуйста, скажите мне, как я могу сгенерировать хэш, подобный apache htpasswd, используя java Спасибо.

Это было полезно?

Решение

Пароли в файлах Apache .htpasswd кодируются с помощью соль.Если вы хотите сгенерировать эти пароли с помощью Java, вам нужно будет сделать то же самое. Этот сайт содержит объяснение алгоритма соли / хеширования, используемого для файлов Apache .htpasswd;Я ищу реальный алгоритм, который вы могли бы использовать, и отредактирую свой ответ после того, как найду его.

Редактировать:Похоже, об этом уже спрашивали раньше, прямо здесь, на SO:

Программное построение htpasswd

Вот документация от Apache, а также их исходный код:

http://httpd.apache.org/docs/2.2/misc/password_encryptions.html

http://svn.apache.org/viewvc/apr/apr-util/branches/1.3.x/crypto/apr_md5.c?view=co

Другие советы

Я нашел, где кто-то занимался этим на java и выпустил его с лицензией на beer-ware.Лучше поздно, чем никогда, верно?Он находится там, вероятно, с 2007 года, так что я был бы удивлен, если бы вы в конце концов не нашли его через некоторое время после запроса в 2010 году.

"Порт Java С помощью:Джонатан Эбби, jonabbey@arlut.utexas.edu "

"MD5Crypt.java является портом пол-Хеннинг Камп оригинал для FreeBSD Хэш-алгоритм MD5 основе, с дополнительным методам поддержки В Apache файл httpd сервер вариант этого алгоритма".

"Результирующая строка будет иметь вид '$apr1$<salt>$<hashed mess="">'"

ftp://ftp.arlut.utexas.edu/pub/java_hashes/

Md5Crypt - это то, что вы ищете.Это реализует Алгоритмы Apache htpasswd

Специфичный для Apache алгоритм, использующий повторяющийся (1000 раз) MD5-дайджест различных комбинаций случайного 32-битного соль и тот Пароль.

import org.apache.commons.codec.digest.Md5Crypt;
...
String enPasswd = Md5Crypt.md5Crypt("your plain password".getBytes());
String htpasswdContent = "your username:" + enPasswd;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top