如何通过 Arch Linux 命令行创建 md5 哈希?

如何通过 Arch Linux 命令行创建 md5 哈希?

在 Arch Linux 中,如何使用命令行为密码创建单个 md5 哈希?当然,我知道有可用的安全密码哈希算法,而 md5 不是,但这只是实验的一部分。

答案1

简单echo来说就是md5sum。

在生成哈希之前,第一个结果将考虑字符串末尾的换行符。

$ echo P@ssword1 | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba  -

否则@AFH如果您希望没有换行符,请执行以下操作:

$ echo -n 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6  -

答案2

没有任何答案提到echo -n 'password' | …,您会将密码写入持久存储,即您的历史记录。

您可以通过在命令前添加空格来避免这种情况(具体取决于 shell),具体方法如下(请针对您的 shell 进行测试)。请阅读您的 shell 文档,了解如何处理这种情况。

或者,您可以md5sum直接使用,通过运行md5sum,输入密码,然后Ctrl+D。不要Enter在密码和之间打勾Ctrl+D,除非您想在哈希中包含换行符。

答案3

这是一个使用 openssl 的示例

echo -n 'stack overflow' | openssl md5
(stdin)= 481b8423202598ecfb233c5fa68caf68

Openssl 实现了几种不同的散列算法,如果您有一天需要不同的算法。

答案4

似乎每个人都建议使用echo——至少,幸运的是,大多数时候,使用-n,这可以缓解它的问题(它在末尾打印一个换行符)。

echo不一定一致。它有许多行为怪癖,你需要记住,并且系统之间可能不兼容。最好改用printf

因此你应该使用

$ printf '%s' 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6  -
$

使用时printf,如果您想在末尾添加换行符,则必须自行明确添加:

$ printf '%s\n' 'P@ssword1' | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba  -
$ echo 'P@ssword1' | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba  -
$

而不必询问是否获取它(并希望echo在稍后运行的系统上也能同样工作):

$ echo -n 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6  -
$

进一步阐述怪癖echo我上面提到过,下面是其中几个:

  • 在不同的系统上,它的工作方式不同。许多现代系统支持-n告诉echo不要用换行符终止输出,但有些可能不支持。如果你真的想打印怎么办-n?有些实现可能实际上因系统而异设置在 shell 或环境中。
  • 它以特殊的方式处理(或可能不会处理)某些字符序列(特别是反斜杠转义字符)。在密码中包含这些字符并非完全不合理,POSIX 不保证 echo 的行为(其行为具体不明确的) 如果第一个参数是-n或其任何参数包含反斜杠。

如果您感兴趣的话,上面关于使用 printf 而不是 echo 的问题的答案还有更多,以及更多阅读链接。

相关内容