Создайте сводку dovecot SHA1, используя bash или python или другой инструмент командной строки linux - PullRequest
4 голосов
/ 02 декабря 2010

Наш сервер dovecot и почтовый сервер аутентифицируют пользователей, используя дайджесты SHA1.Мы не можем реально изменить текущий дайджест, потому что у нас так много пользователей, и мы не хотим, чтобы они заново создавали все свои пароли.

Мы хотели бы упростить создание дайджеста для размещенияв базу данных для наших пользователей (и в конечном итоге создадим веб-интерфейс, чтобы они могли сами его изменить).

В настоящее время мы создаем дайджест с помощью команды linux:

dovecotpw -s SHA1

Мы хотимпереключиться, потому что dovecotpw не поддерживает сценарии (по крайней мере, без использования ожидаемого или чего-то подобного).Тем не менее, все, что я пробовал (sha1sum, mysql's sha1, python's hashlib.sha1), все производит что-то очень отличное от команды dovecotpw.

Ниже приведен вывод различных команд для слова: пароль

dovecotpw -> W6ph5Mm5Pz8GgiULbPgzG37mj9g=
sha1sum -> 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
python hashlib.sha1() -> 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
mysql sha1() -> 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8

Так что похоже, что голубятня делает вещи по-другому.К сожалению, это то, что мне нужно для его создания.

Есть идеи, как я могу получить dovecot sha1 из команды с возможностью выполнения сценариев?

Спасибо.

Ответы [ 2 ]

7 голосов
/ 03 декабря 2010

Вам нужно base64 кодировать двоичный дайджест, чтобы получить его в формате.

>>> import hashlib
>>> import base64

>>> p = hashlib.sha1('password')
>>> base64.b64encode(p.digest())
'W6ph5Mm5Pz8GgiULbPgzG37mj9g='

РЕДАКТИРОВАТЬ: Кстати, если вы предпочитаете делать это из скрипта терминала / bash, вы можете сделать

$ echo -n 'password' | openssl sha1 -binary | base64     
W6ph5Mm5Pz8GgiULbPgzG37mj9g=

Кроме того, вы можете сказать, что dovecotpw больше не давал hexdigest хеша, потому что у него больше символов, которые не являются шестнадцатеричными [0-9a-f].Использование символов [A-Za-z0-9 + /] с окончанием = предполагает, что это было преобразование хэша в base64.

1 голос
/ 03 декабря 2010

Выход dovecotpw закодирован в base64.

...