gpt4 book ai didi

algorithm - 应用程序中的密码哈希字符

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:01:26 25 4
gpt4 key购买 nike

非常感谢您的宝贵时间。

我想明白一些事情。为什么我手动生成的散列似乎只包含字母数字字符 0-9、a-f,但我们最喜欢的应用程序使用的所有散列似乎都包含所有字母 [和大写字母]?

例子:

使用 sha256 的手动哈希:

# sha256sum <<< asdf
d1bc8d3ba4afc7e109612cb73acbdddac052c93025aa1f82942edabb7deb82a1 -

你永远不会看到任何高于 f 的字母。没有什么是大写的。

但是如果我使用 htpasswd 创建一个 SHA 散列,它会得到所有的字母数字:

# htpasswd -snb test asdf
test:{SHA}PaVBVZkYqAjCQCu6UBL2xgsnZhw=

例如,如果您查看网站 CMS 数据库中的密码哈希,也会发生同样的事情。一定有一些额外的步骤我遗漏了,或者最终格式与实际的哈希格式不同。我以为它可能是 base64 编码或其他东西,但它似乎没有解码。

有人可以解释一下幕后发生的事情吗?我的 friend 解释说,管道“asdf”到 sha256sum 显示的是校验和,这不是实际的散列本身。那是对的吗?如果是这样,我如何才能看到实际的哈希值?

非常感谢您!

最佳答案

这里有两件事。

首先,您的手动哈希使用的算法与 htpasswd 不同。 -s 标志导致 htpasswd 使用 SHA1,而不是 SHA256。使用 sha1sum 而不是 sha256sum

其次,哈希的编码不同。您的手动哈希是十六进制编码的,htpasswd 哈希是 Base64 编码的。 htpasswd 哈希解码,它只是解码为二进制。如果您尝试打印此二进制文件,它将看起来像 =¥AU™¨Â@+ºPöÆ'f(取决于您使用的字符编码),这可能就是您认为它不是的原因解码。

如果您将 Base64 直接转换为 Hex(您可以使用 this one 等在线工具),您会发现 sha1sum 会生成相同的哈希值。

My friend explained that piping "asdf" to sha256sum is showing the checksum, which is not the actual hash itself.

你的 friend 是不正确的。您看到的是哈希的十六进制编码。但是管道 确实 影响了生成的散列,它添加了一个换行符,所以你实际散列的是 asdf\n。请改用此命令:

echo -n "asdf" | sha1sum

关于algorithm - 应用程序中的密码哈希字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18235944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com