sha1密码哈希linux
我想要的是能够获得特定密码的sha1散列值 例如,如果我的密码是“hello”,那么我需要在linux中键入什么命令来获取hello的sha1散列值 我试过了sha1密码哈希linux,linux,bash,shell,cryptography,sha1,Linux,Bash,Shell,Cryptography,Sha1,我想要的是能够获得特定密码的sha1散列值 例如,如果我的密码是“hello”,那么我需要在linux中键入什么命令来获取hello的sha1散列值 我试过了 echo -n "hello" | sha1sum 但是它返回的值没有给出一个数据库存储过程接受的值,该数据库存储过程接受散列值来验证登录(这个问题不在这个存储过程中,因为我们到处使用它来验证) 基本上 我只需要知道一个命令就可以给出一个字符串并返回它的sha1散列值 谢谢!:) 在不同的应用程序中,密码格式可能不同。例如,对于/etc
echo -n "hello" | sha1sum
但是它返回的值没有给出一个数据库存储过程接受的值,该数据库存储过程接受散列值来验证登录(这个问题不在这个存储过程中,因为我们到处使用它来验证)
基本上
我只需要知道一个命令就可以给出一个字符串并返回它的sha1散列值
谢谢!:) 在不同的应用程序中,密码格式可能不同。例如,对于
/etc/passwd
,您可以使用以下命令生成SHA-256密码:
#perl-e'打印密码(“密码”,q($5$salt$),“\n”;'
$5$salt$Gcm6FsVtF/Qa77ZKD.iwsJlCVPY0XSMgLJL0Hnww/c1
#
对于LDAP
(例如slapd.conf
)中的密码,可能是:
#slappasswd-h“{SSHA}”
新密码:
重新输入新密码:
{SSHA}BJEE8DPBJYEC7HD1KUHXQUDF9DT4HYA
#
您需要知道应用程序的确切密码格式以及密码是如何生成的。我知道这确实很旧,但以下是它不起作用的原因以及如何处理: 当你运行
echo -n "hello" | sha1sum
在你的例子中,你得到
aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d -
注意结尾的“-”
前面的散列是hello的正确sha1散列,但是破折号弄乱了散列
要仅获取第一部分,您可以执行以下操作:
echo -n "hello" | sha1sum | awk '{print $1}'
这将通过awk提供您的输出,并只提供第1列。
结果:正确的sha1表示“hello”
希望这对别人有帮助
echo -n YOUR_TEXT | sha1sum | awk '{print $1}'
将您的文本与您必须散列的文本交换。您的问题是缺少盐。Python和
sha1sum
返回aaf4c61dcc5e8a2dabede0f3b482cd9ea9434d
。你确定密码在散列之前没有附加盐吗?我想如果我的命令没有错,那一定是其他原因。谢谢你看这个!作为盐的问题结束了Hey Dan,你有没有可能接受回答你问题的答案?OP已经评论说这是盐的问题。只使用散列值(MD5,SHA1,…)作为密码不是一个好的做法。我完全同意不使用MD5或SHA1等未加盐的密码。事实上,我错过了他不再需要答案的事实。我突然想到,他使用的命令没有完全起作用,因为它最终会输出一个额外的破折号。因为他的问题是“我只需要知道一个命令来给出一个字符串并获取它的sha1散列值”,而我没有看到完整的答案,所以我插话了。谢谢你指出这一点。嗨,我有两个问题。。。top方法仍然安全吗?为什么盐会直接输出到散列?它不应该在散列之前添加吗?谢谢你<代码>1)我不能确定它是否安全,因为这是非常主观的。在我的Debian9上,它仍然支持md5、sha256和sha512<代码>2)是,salt将影响哈希结果,salt也将是密码的一部分。这就是系统验证用户密码的方式:用户输入密码(明文),系统获取salt并重新计算结果,并将其与/etc/passwd(实际上是/etc/shadow)中的密码(加密)进行比较。如果没有盐,系统将无法验证它。
echo -n YOUR_TEXT | sha1sum | awk '{print $1}'