Хэш пароля ноутбука Jupyter выходит странным?

#python #jupyter-notebook #jupyter

Вопрос:

Я следую инструкциям здесь: https://jupyter-notebook.readthedocs.io/en/stable/public_server.html чтобы сгенерировать хэшированный пароль для копирования в jupyter_notebook_config.py. Однако всякий раз, когда я пытаюсь войти в настоящий ноутбук Jupyter, пароль не работает.

Это код, который я использую:

 from notebook.auth import passwd
passwd()
 

То, что я получаю взамен, — это хэш, который выглядит примерно так: 'argon2:$argon2id$v=19$m=10240,t=10,p=8$xde6DK/DQXdwQw7pviv33A$QEQftsyWij4g7oQqJ54XeQ'

однако все пароли, которые я вижу в примерах, выглядят примерно так: 'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'

Что происходит не так? Также я должен войти в систему с паролем до или после хэша?

Комментарии:

1. argon2 это гораздо лучший формат хэширования паролей, чем соленый sha. Видишь en.wikipedia.org/wiki/Argon2 для предыстории.

2. …и весь смысл хэширования пароля заключается в том, чтобы сервер хранил что-то, что нельзя использовать в качестве самого пароля и из чего пароль нелегко получить; поэтому вы используете исходное значение перед хэшем для входа в систему. Если бы значение после хэша можно было использовать для входа в систему, весь смысл хранения паролей в хэшированной форме был бы проигран.

3. Помимо этого… на самом деле, это вопрос о цепочках зависимостей и сравнении конкретных версий. Если одна версия notebook.auth поддерживает argon2, а другая-нет, вы не можете устанавливать хэш, созданный более новой версией, в установке, которая поддерживает только более старый формат; но сейчас вопрос вообще не содержит сведений о версии.

4. @CharlesDuffy большое вам спасибо за ваш подробный ответ. Я считаю, что проблема может заключаться в управлении версиями, и именно поэтому оно не работает. Спасибо. Я также заметил, что веб-сайт ввел a u перед их хэшем, как здесь: c.NotebookApp.password = u'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed' вы знаете, почему они это поместили?

5. u'' является версией строки Юникода Python 2, которая в Python 3 является просто '' . (То, что было '' в Python 2, есть b'' в Python 3).

Ответ №1:

Argon2-более современный и, как правило, более надежный алгоритм хэширования паролей, чем соленый sha1. Таким образом, это разумный выбор для использования текущих версий Jupyter.

Если у вас есть одна установка Jupyter, которая генерирует хэши паролей argon2, и вторая, которая отказывается принимать эти хэши, из этого следует вывод, что между ними существует разница в версиях.

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