Проблемы с шифрованием Python MD5, SHA512 (+ соль) - PullRequest
6 голосов
/ 05 апреля 2011

Я пытаюсь понять, как Linux шифрует наш пароль в файле etc / shadow, поэтому у меня нет нового виртуального «тестового» пользователя, чтобы провести некоторый тест:

user: newuser
пароль: usrpw123
Генерируемая соль: Ii4CGbr7

Итак, ОС выдает мне следующую строку в файле etc / shadow,с использованием системы SHA512 encryptation ($ 6 $): новый_пользователь: $ 6 $ Ii4CGbr7 $ IOua8 / oPV79Yp.BwzpxlSHjmCvRfTomZ.bhEvjZV2x5qhrvk82lZVrEtWQQej2pOWMdN7hvKwNgvCXKFQm5CB /: 15069: 0: 99999: 7 :::

1016 * Теперь явозьмите модуль SHA512 из python и попробуйте это:
import hashlib
m = hashlib.sha512()
m.update('Ii4CGbr7'+'usrpw123')
print m.hexdigest

В результате я получу следующий хеш: c73156daca3e31125ce457f1343201cc8a26400b2974440af2cc72687922b48b6631d21c186796ea2ea5e5eeeeeeeeeeeeeeaeeeeeeee.другой в файле / etc / shadow, и я не знаю, почему, если я использую тот же пароль salt + для генерации хеша.
Может кто-нибудь дать мне руку и expобъясните мне, почему это происходит?

А также, почему файлы / etc / shadow генерируют хэш с несколькими точками (.)?
Спасибо

Ответы [ 3 ]

6 голосов
/ 05 апреля 2011

Существует алгоритм для генерации хэшей паролей, найденный в /etc/shadow.

См. Этот документ для объяснения:
http://www.akkadia.org/drepper/SHA-crypt.txt

Есть реализация этого впитон здесь:
http://packages.python.org/passlib/lib/passlib.hash.sha512_crypt.html

6 голосов
/ 05 апреля 2011

Поля в / etc / shadow построены или интерпретированы не так, как вы думаете.Вам нужно прочитать справочную страницу для получения подробной информации, но наиболее очевидное отличие состоит в том, что она использует необычную кодировку base64 для соли и хэша.

2 голосов
/ 14 января 2014

Я попал в ту же ловушку, что все, что я прочитал, заставило меня поверить, что вы можете получить результаты так же, как написали.

Мне удалось определить пароль с помощью соли и пароля с помощью crypt.crypt ()

import crypt
crypt.crypt(password, salt)

соль: $ 6 $ Ii4CGbr7 пароль: usrpw123

не совсем использует библиотеку hashlib, но она работает.

...