unix OpenSSL从shell标准输入创建SHA哈希

yvgpqqbh  于 5个月前  发布在  Unix
关注(0)|答案(3)|浏览(57)

如何在不使用文件的情况下从命令行使用OpenSSL生成SHA-512哈希?
我试过了

echo "password" | openssl dgst -sha512

字符串
但是哈希看起来是错误的(与http://hash.online-convert.com/sha512-generator相比)。

kqlmhetl

kqlmhetl1#

试试echo -n "password"
发生的情况是echo添加到字符串末尾的新行字符被散列。-necho抑制了这种行为。

rvpgvaaj

rvpgvaaj2#

如果你使用的是MacOS,你可能会遇到echo忽略-n参数的情况。要解决这个问题,直接调用二进制文件:

/bin/echo -n "password" | openssl sha512

字符串

u4vypkhs

u4vypkhs3#

对于那些仍在寻找答案的人来说,还有另一种选择。
您可以简单地使用:用途:

openssl passwd -6 yoursecurepasswordphrase

字符串
-6告诉OpenSSL使用SHA-512。
这是测试,发现工作在OpenSSL 3.2.0 23 Nov 2023(库:OpenSSL 3.2.0 23 Nov 2023)在MacOS索诺马(14.1.2(23 B 92))。
为了防止密码在历史记录中被其他人窥探,您可以将setopt HIST_IGNORE_SPACE放置到~/.zshrc文件中。
或者,当您仍然使用Bash时(zsh是MacOS的默认设置),该设置称为HISTCONTROL=ignorespace并放入~/.bashrc文件中。
然后,每当发出包含敏感信息的命令时,您只需在命令行上以空格开始,如下所示:

↓ here goes a space
 openssl passwd -6 yoursecurepasswordphrase


最后,当您没有在命令行中指定密码时,OpenSSL会提示您输入密码,并要求您进行验证。这样,它就不会出现在您的历史记录中,也不需要空间。

相关问题