例如,我希望对字符串
abcdefg
进行哈希处理。当前,md5sum命令仅接受文件名作为输入。我只想输入以下行即可完成所有操作。md5sum abcdefg
output: ac54bcf346e578feb46888b3ecd2344f
如何实现?
#1 楼
您也可以这样说:~$ echo -n Welcome | md5sum
83218ac34c1834c26781fe4bde918ee4 -
它基本上执行与@enzotib描述的相同的操作,但可能会更简单。
评论
您还想更新示例结果,因为7803ffca ...是添加了换行符的结果。上面命令的正确结果是83218ac34c1834c26781fe4bde918ee4-
– Xanthir
15年5月27日在21:14
为什么最后会有空格和破折号?
– Keune
2015年12月2日,9:46
请注意,-n是必需的。没有它,您的哈希将完全错误,因为它包含换行符。
– Pithikos
16年2月8日在11:23
我怎么能忽略-最后。 @jfmessier
–警报
18年5月31日在13:04
@alper echo -n欢迎| md5sum | awk'{print $ 1}'将采用空格分隔的第一个“列”。您也可以使用cut。
–domdambrogia
20-11-20在6:13
#2 楼
很简单,它接受stdin,因此md5sum <<<"my string"
为了避免外壳程序添加尾随换行符:
printf '%s' "my string" | md5sum
评论
给@messier和@enzotib投票;两者都属于我的“优雅简洁”类别。我倾向于在脚本中使用<<<“管道;在命令行中使用echo string win。
–汤姆
11年7月20日在17:01
+1可正确使用printf。如果您想要不带-的总和,请输入| cut -d''-f 1.示例用法:sum = $(printf'%s''some string'| md5sum | cut -d''-f 1)
– Lekensteyn
2011年7月21日在8:49
很奇怪,但是<<<运算符和printf函数为md5哈希给出了完全不同的结果! printf的结果是正确的!
–哈迈德·莫米尼(Hamed Momeni)
2011年7月21日15:30
似乎使用<<<运算符将换行符发送到md5sum!
–哈迈德·莫米尼(Hamed Momeni)
2011年7月21日在15:32
是的,正如我在第一个和第二个示例中所说的那样
– Enzotib
2011年7月21日在18:32
#3 楼
$ echo -n 123456 | md5sum | awk '{print }'
e10adc3949ba59abbe56e057f20f883e
您可以创建shell脚本。例如,脚本名称为md5.sh:
#!/bin/bash
echo -n | md5sum | awk '{print }'
/>权限执行:
chmod +x md5.sh
然后:
$ md5.sh 123456
e10adc3949ba59abbe56e057f20f883e
如果您的系统是macOS。您需要修改以下脚本:
$ echo -n 123456 | md5 | awk '{print }'
e10adc3949ba59abbe56e057f20f883e
评论
这太长了。
– Gucho Ca
16年5月12日,3:40
替代awk:cut -d''-f 1
– phil294
17年5月5日在6:13
我创建了一个函数md5(){echo -n $ 1 | md5sum | awk'{print $ 1}';在.bashrc中,然后可以在命令行中使用$ md5测试。感谢你的回答
–鲁本·本杰明(Ruben Benjamin)
19-2-20在14:34
较短的awk命令:'$ 0 = $ 1'
– Alex Stragies
19年7月29日在12:14
@AlexStragies是的
–ty4z2008
19年7月30日在2:26
#4 楼
openssl md5 filename
openssl sha1 filename
对于字符串管道,使用echo
echo -n 123456 | openssl md5
#5 楼
运行不带任何参数的md5sum会使它从终端读取输入。输入或粘贴所需的任何内容,完成后按ctrl-d
结束输入。评论
是的,你也是对的。但是ctrl + d需要按两次才能起作用。
–哈迈德·莫米尼(Hamed Momeni)
2011-09-30 13:57
@James,如果不跟换行符,是的。如果您在按Enter键后将其击中,则只需一次。当它不跟随换行符时,它只是强制到目前为止到目前为止在该行上键入的所有字符,而不是等待换行符。
–psusi
2011-09-30 14:42
#6 楼
我对--help
的快速查询显示了以下命令:md5sum -
然后将提示您进行简单的输入。输入一些文本,然后使用Enter键,然后使用Ctrl + D表示文件结尾,然后使
md5sum
吐出您输入的原始文本的MD5(包括Enter,它是CR,IIRC)。输入少,无管道!并避免将您的明文密码记录在shell历史记录中!呜!
如果您不希望结尾的CR(通常是要散列密码的情况),请不要在Ctrl + D之前按Enter键,而要输入Ctrl + D两次。
#7 楼
在我的脚本中,我发现关于此问题,您应该了解两件事。无论您执行
echo "$myvariable"
还是echo -n "$myvariable"
都没关系,但是您应该始终使用将doubleqoutes用于字符串,并始终使用相同的方法。如果不是这样,则不匹配。
在输出中总是出现尾随空格和破折号,如示例所示:
$ echo -n Welcome | md5sum
7803ffcaea43bb81a439fde13b29bc35 -
摆脱这些,仅保留代码
7803ffcaea43bb81a439fde13b29bc35
,执行:
echo "$myvariable" | md5sum | cut -d" " -f1
评论
不要忘记这里的-n参数,以避免输出结尾的换行符,这将导致错误的md5:echo -n $ myvariable | md5sum |切-d“” -f1
– derFunk
15年12月3日在19:28
#8 楼
有许多示例可以执行此操作,但是其中一些示例并不等效,因为其中一些显式或隐式包含换行符,而另一些则不然。我想清楚地说明哪种流行方式方法包括换行符,但不包括换行符。
这里有一些示例,用于计算md5哈希而没有尾随换行符(CORRECT):
使用带有文本的文件:
$ echo -n "test" > test.txt
$ wc test.txt
0 1 4 test.txt
$ md5sum test.txt
098f6bcd4621d373cade4e832627b4f6 test.txt
注意:
-n
中的echo
表示:“不输出结尾的换行符”。将
echo
与-n
内联一起使用:$ echo -n "test" | md5sum
098f6bcd4621d373cade4e832627b4f6 -
使用
printf
:$ printf "%s" "test" | md5sum
098f6bcd4621d373cade4e832627b4f6 -
仅使用
md5sum
命令:(我们写
md5sum
,按Enter键,然后输入字符串test
,然后按双组合键Ctrl + d)$ md5sum
test098f6bcd4621d373cade4e832627b4f6 -
使用
md5sum -
命令:(让我们写
md5sum -
,按输入然后输入字符串test
,然后按双组合键Ctrl + d )$ md5sum -
test098f6bcd4621d373cade4e832627b4f6 -
下面是一些使用尾随换行符计算md5哈希的示例(很不正确):
使用带有文本的文件:
$ echo "test" > test_n.txt
$ wc test_n.txt
1 1 5 test_n.txt
$ md5sum test_n.txt
d8e8fca2dc0f896fd7cb4cb0031ba249 test_n.txt
使用
echo
不带内联-n
内联:echo "test" | md5sum
d8e8fca2dc0f896fd7cb4cb0031ba249 -
在这里使用字符串:
$ md5sum <<< "test"
d8e8fca2dc0f896fd7cb4cb0031ba249 -
仅使用
md5sum
命令,但在写入文本后使用Enter键:(让我们写
md5sum
,按Enter键,然后输入字符串test
,再按agaien Enter并一次组合Ctrl + d)$ md5sum
test
d8e8fca2dc0f896fd7cb4cb0031ba249 -
使用
md5sum -
命令,但在写入文本后使用Enter键:(让我们写
md5sum -
,按Enter然后输入字符串test
,然后按agaien Enter键,然后按一下组合键Ctrl + d)$ md5sum -
test
d8e8fca2dc0f896fd7cb4cb0031ba249 -
#9 楼
就我而言,对纯字符串进行哈希处理的最佳解决方案是:md5hash=$(echo -n "myhashedstring" | md5sum | head -c 32)
将导致
2e8f8b94e488a2f442a55951862612aa
评论
md5 -s abcdefg不知道为什么这个论坛上有这个问题。它应该在Unix和Linux上,超级用户,但是在这里?我不确定。无论如何,它都有价值,无论它在哪里。