1 回答
TA贡献1780条经验 获得超1个赞
密码哈希字符串编码的标准是什么?
空无一人。
嘿,这是一个简单的答案!单击“发布您的答案”。
好吧,不幸的是,虽然上面的说法是正确的,但值得庆幸的是,有些人已经费了很大的劲收集了很多关于所有使用变化的信息。
特别是,Python 的Passlib库的作者(它基本上做你想做的事情)已经写了一个关于他们称之为模块化地穴格式的页面,他们称之为“不是标准”。以下是该页面的一些精选引述 [粗体斜体强调我的]:
但是,没有描述此格式的官方规范文档。也没有标识符的中央注册表或实际规则。模块化的 crypt 格式更像是一个临时的想法,而不是一个真正的标准。
不幸的是,没有这种格式的规范文档。相反,它仅以事实上的形式存在
首次引入 MCF 时,大多数方案选择单个数字作为其标识符(例如
$1$
,对于md5_crypt)。因此,一些较旧的系统在尝试区分哈希值时仅查看第一个字符。
大多数模块化 crypt 格式散列都遵循此约定,尽管有些(如bcrypt)省略
$
了配置和摘要之间的分隔符。
[T]这里没有关于配置字符串是否应该
$
在末尾包含尾随的标准
请注意,模块化地穴格式不是规范或标准。它描述了在野外使用的各种不同格式。密码哈希竞赛 (PHC)的组织者试图制定一个规范,称为PHC 字符串格式。但是,PHC 不是具有任何权威的正式标准组织。它只是一群松散的密码学家。虽然他们建议每个新的密码哈希函数都应该使用 PHC 字符串格式,但他们只能强制要求提交给密码哈希竞赛的密码哈希函数使用 PHC 字符串格式。
无论哪种方式,PHC 字符串格式仅适用于新的密码哈希函数,不适用于现有的。
虽然我强烈建议您应该对生成的任何输出使用 PHC 字符串格式,但您仍然需要处理各种不同格式的输入,包括像这样的一些 gem:
cta_pbkdf2_sha1和dlitz_pbkdf2_sha1都使用相同的标识符。虽然存在其他内部差异,但可以通过以下事实快速区分两者:cta 哈希总是以 结尾
=
,而 dlitz 哈希根本不包含=
。
- 1 回答
- 0 关注
- 79 浏览
添加回答
举报