问题描述
如何直接从终端获取字符串的MD5散列?
例如,我想要字符串abcdefg
散列。目前md5sum命令只接受文件名作为输入。我想简单地输入下面的行,一切都完成了。
md5sum abcdefg
output: ac54bcf346e578feb46888b3ecd2344f
我怎样才能做到这一点?
最佳解决方法
你也可以这样说:
~$ echo -n Welcome | md5sum
83218ac34c1834c26781fe4bde918ee4 -
它基本上和@enzotib描述的一样,但可能更简单一些。
次佳解决方法
非常简单,它接受stdin,所以
md5sum <<<"my string"
为了避免shell添加的尾随换行符:
printf '%s' "my string" | md5sum
第三种解决方法
$ echo -n 123456 | md5sum | awk '{print $1}'
e10adc3949ba59abbe56e057f20f883e
你可以创建一个shell脚本。
例如,脚本名称是md5.sh:
#!/bin/bash
echo -n $1 | md5sum | awk '{print $1}'
许可执行:
chmod +x md5.sh
然后:
$ md5.sh 123456
e10adc3949ba59abbe56e057f20f883e
如果你的系统是macOS。你需要修改这个脚本:
$ echo -n 123456 | md5 | awk '{print $1}'
e10adc3949ba59abbe56e057f20f883e
第四种方法
运行没有参数的md5sum将导致它从终端读取输入。输入或粘贴任何你想要的,当你完成后,按ctrl-d
结束输入。
第五种方法
我在md5sum
的--help
上快速地发现,命令:
md5sum -
然后会提示输入简单信息。输入一些文本,然后使用Enter
,然后使用Ctrl
+ D
表示文件结束,然后使md5sum
输出您输入的原始文本的MD5。
少打字,没有管道!呜!
如果在Ctrl
+ D
之前没有击中Enter
,则必须输入两次Ctrl
+ D
,其结果是错误的hash-sum。
第六种方法
openssl md5 filename
openssl sha1 filename
对于使用echo的字符串管道内容
echo -n 123456 | openssl md5
第七种方法
在我的脚本中,我发现有两件事你应该知道这个问题。
-
不管你做
echo "$myvariable"
或echo -n "$myvariable"
,但是你应该总是使用字符串的doubleqoutes并且总是使用相同的方法。如果不是,事情就不会匹配。 -
在输出中你总会得到一个尾部空格和一个破折号,如下例所示:
$ echo -n Welcome | md5sum 7803ffcaea43bb81a439fde13b29bc35 -
摆脱这一点,只留下代码7803ffcaea43bb81a439fde13b29bc35
,做:echo "$myvariable" | md5sum | cut -d" " -f1