【发布时间】:2021-07-22 16:05:42
【问题描述】:
我在这里遵循指南: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'
出了什么问题?我也应该使用密码 prehash 或 posthash 登录吗?
【问题讨论】:
-
argon2是一种比加盐 sha更好 的密码哈希格式。背景见en.wikipedia.org/wiki/Argon2。 -
...而散列密码的全部意义在于,服务器存储了一些不能用作密码本身的东西,并且不能轻易地从中导出密码;所以你使用 pre-hash 的原始值登录。如果 post-hash 值可以用于登录,那么以散列形式存储密码的整个点都将失败。
-
除此之外......真的,这是一个关于依赖链和比较特定版本的问题。如果
notebook.auth的一个版本支持 argon2 而另一个不支持,则您不能在仅支持旧格式的安装中安装由较新版本创建的哈希;但现在的问题根本不包含任何版本详细信息。 -
@CharlesDuffy 非常感谢您的详细回复。我相信版本控制可能是问题所在,这就是它不起作用的原因。谢谢你。我还注意到该网站在哈希之前输入了
u,如下所示:c.NotebookApp.password = u'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'你知道他们为什么放这个吗? -
u''是 Python 2 版本的 Unicode 字符串,在 Python 3 中只是''。 (Python 2 中的''在 Python 3 中是b'')。
标签: python jupyter-notebook jupyter