salt - 将纯文本密码转换为 MD5 salted hash

标签 salt md5sum

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

$1$7wtGfwgp$772bEQInetnJKUNtLM0Xt/

我使用的密码是“Test11”。据我了解,$1$ 意味着它是哈希 MD5 密码?如果知道盐和密码并使用 md5sum,如何得出最终的哈希值“772bEQInetnJKUNtLM0Xt/”?据我了解,它应该是这样的:

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

..但这不太相符。我做错了什么?

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

最佳答案

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

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

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

您可以使用例如来执行相同的操作 python :

import crypt

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

基于此 Python 文档页面:

基于维基百科文章:

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

顺便说一句,这是一个很好的在线哈希生成器:

希望这有帮助。

关于salt - 将纯文本密码转换为 MD5 salted hash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8461740/

相关文章:

php - 将 Windows CryptoAPI 盐和哈希转换为 PHP

java - 在数据库中存储盐 - 字符还是二进制?

encryption - 盐和散列,为什么不使用用户名?

md5sum - 有没有办法用一些额外的字节填充文件以获得不同的 md5 校验和?

bash - MD5进度输出-BASH

c++ - 如何在 C++ 中检查多个文件是否有重复项

c - 相同文件内容的不同 md5sum?

php - 从 sha1 加盐密码验证用户登录