【发布时间】:2021-01-14 03:23:14
【问题描述】:
大家好,我正在研究 Pbkdf2_sha256 的工作原理。
这是我目前正在研究的一些破解哈希
PBKDF2 pbkdf2_sha256$10000$005OtPxTXhPq$K/2GplWPJsBVj+qbgdKW8YEteQyUkIiquT5MaOhPo4Y=:harry
PBKDF2 pbkdf2_sha256$10000$00Qhibr5Mbeg$l9grYueDrl3qN3NA7e9j5PodgV1XkGTz0Z6ajhF99AY=:radio
PBKDF2 pbkdf2_sha256$10000$00h7h0g1ZKE1$YEobSm/y+cFg/VXhU4gGYJ6eOkZ68jhJ5axDu68Dack=:momo
PBKDF2 pbkdf2_sha256$10000$01JMkfGk1RXh$vD+GGZshw5kExtZOpl5+Lht3xECULdbNVOesoTicxto=:fred
PBKDF2 pbkdf2_sha256$10000$01vkw1viCg4J$2hjlbq10Jh/Su3yqjKfYCnCSt1WlKcKJtsqDET618M0=:get
PBKDF2 pbkdf2_sha256$10000$01wayF5JLVSZ$2/9COWqb6SZG/raqabtU8fNBzkrt2puN7SaKw0U7jBs=:987456321
这是我计算哈希的代码和输出
>>> from passlib.hash import pbkdf2_sha256
>>> from passlib.utils.binary import ab64_decode
>>> print(pbkdf2_sha256.hash("harry", rounds=10000, salt=ab64_decode(b'005OtPxTXhPq')))
$pbkdf2-sha256$10000$005OtPxTXhPq$l9LhRMPBW.EEdlBE9b.P0Z70Kxidl9EJhfGK7FiLUHA
比较这两者,你可以看出区别。
$pbkdf2_sha256$10000$005OtPxTXhPq$K/2GplWPJsBVj+qbgdKW8YEteQyUkIiquT5MaOhPo4Y=
$pbkdf2-sha256$10000$005OtPxTXhPq$l9LhRMPBW.EEdlBE9b.P0Z70Kxidl9EJhfGK7FiLUHA
谁能解释一下是什么原因造成的,我该如何计算正确的哈希值?
提前致谢!
【问题讨论】:
-
你怎么知道“破解”的哈希值是正确的?这些破解哈希中的盐值非常短。
-
“破解”散列使用 Unix 密码散列中未使用的 base64 编码。 '+' 字符通常不会出现在这样的散列中。此外,在 Unix 密码哈希中省略了 '=' 填充字符。这证明破解的哈希列表中有问题。无论是哪种格式,它都与 passlib 不兼容
-
@PresidentJamesK.Polk 这些哈希来自一个哈希破解社区,我很确定破解的那些已经过验证。原始列表有大约 75k 行,所有盐的长度都相同。附加的 = 看起来确实很可疑,因为它出现在 :[plain] 之前的所有行中