【问题标题】:convert plain-text password to MD5 salted hash将纯文本密码转换为 MD5 加盐哈希
【发布时间】:2011-12-11 03:21:46
【问题描述】:

例如,在 FreeBSD 下,密码存储在 /etc/master.passwd 中,如下所示:

$1$7wtGfwgp$772bEQInetnJKUNtLM0Xt/

我使用的密码是“Test11”。据我了解,$1$ 意味着它是一个散列的 MD5 加密货币?如果他知道盐和密码并使用 md5sum,他怎么能得出最终的哈希“772bEQInetnJKUNtLM0Xt/”?据我了解,应该是这样的:

$ echo -n $(echo -n 7wtGfwgp)$(echo -n Test11) | md5sum

..但这并不完全匹配。我做错了什么?

PS 我问这个是为了了解类 UNIX 操作系统下的密码哈希系统。

【问题讨论】:

  • 这对serverfault.com(或者unix.stackexchange.com?)来说是一个更好的问题。
  • @ziesemer 不是真的。服务器管理员可能需要这样做,但问题不是这样,我认为它不会被接受。 Unix 应该没问题,不过我觉得这里没问题。

标签: salt md5sum


【解决方案1】:

我在 Linux 上,我不确定 FreeBSD 是否真的使用相同的算法,但您可以查看这些信息源(希望 FreeBSD 上也是如此):

根据最后一页,这个 PHP 脚本将产生您期望的输出(给定您的密码和盐):

<?php
$password = 'Test11';
$salt = '$1$7wtGfwgp$';
echo 'Crypt hash: ' . crypt($password, $salt) . "\n"
?>

您可以使用例如蟒蛇:

import crypt

password = 'Test11'
salt = '$1$7wtGfwgp$'
print(crypt.crypt(password, salt))

基于此 Python 文档页面:

根据维基百科的文章:

你可以看到crypt函数的来源,例如这里:

附带说明,这是一个不错的在线哈希生成器:

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    散列和加密是不同的,即使散列是加密的一部分;)

    因此,如果您想对其进行加密,请像发布的 icyrock 一样进行操作。 md5sum(freebsd coreutils 中的gmd5sum)只创建关于某些输入的哈希和(RFC 1321)。它不像(几个)加密代码那样使用此哈希在进一步的步骤中进行加密。

    这就是为什么你的代码会给你带来完全不同的结果。

    【讨论】:

      猜你喜欢
      • 2019-10-02
      • 2011-02-11
      • 1970-01-01
      • 2012-03-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      • 2010-11-25
      • 1970-01-01
      相关资源
      最近更新 更多