Answers:
您也可以这样说:
~$ echo -n Welcome | md5sum
83218ac34c1834c26781fe4bde918ee4 -
它基本上执行与@enzotib描述的相同的操作,但可能会更简单。
83218ac34c1834c26781fe4bde918ee4 -
-n
是必填项。没有它,您的哈希将完全错误,因为它包含换行符。
-
。@jfmessier
很简单,它接受标准输入,所以
md5sum <<<"my string"
为了避免外壳程序添加尾随换行符:
printf '%s' "my string" | md5sum
<<<"
在脚本中使用管道;echo string
赢得命令行。做得好。
printf
正确使用。如果您想获得不带的总和-
,请输入| cut -d ' ' -f 1
。用法示例:sum=$(printf '%s' 'some string' | md5sum | cut -d ' ' -f 1)
<<<
运算符和printf
函数为md5哈希给出了完全不同的结果!printf的结果是正确的!
<<<
运算符会向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
cut -d ' ' -f 1
md5() { echo -n $1 | md5sum | awk '{print $1}'; }
在.bashrc中创建了一个函数,然后可以$ md5 test
在命令行中使用。感谢您的回答
awk
命令:'$0=$1'
运行不带任何参数的md5sum会使它从终端读取输入。输入或粘贴所需的任何内容,完成后,按ctrl-d
结束输入。
ctrl+d
需要按两次才能正常工作。
在我的脚本中,我发现关于此问题,您应该了解两件事。
echo "$myvariable"
或者echo -n "$myvariable"
,但你应该总是使用doubleqoutes字符串,总是使用同样的方法。如果不是这样,事情就不会匹配。在输出中,您总是得到一个尾随空格和破折号,如示例所示:
$ echo -n Welcome | md5sum
7803ffcaea43bb81a439fde13b29bc35 -
要摆脱这种情况,只保留代码7803ffcaea43bb81a439fde13b29bc35
,请执行以下操作:echo "$myvariable" | md5sum | cut -d" " -f1
-n
这里的参数,以避免输出结尾的换行符,这会导致错误的md5:echo -n $myvariable | md5sum | cut -d" " -f1
有许多示例可以执行此操作,但是其中一些示例并不等效,因为其中一些显式或隐式包含换行符,而另一些则不然。
我想明确指出哪些流行的方法包括换行符,哪些不包括。
以下是一些计算md5哈希值而无尾随换行符(CORRECT)的示例:
使用带有文本的文件:
$ echo -n "test" > test.txt
$ wc test.txt
0 1 4 test.txt
$ md5sum test.txt
098f6bcd4621d373cade4e832627b4f6 test.txt
注意: -n
in echo
表示:“不输出结尾的换行符”。
echo
与-n
内联一起使用:
$ echo -n "test" | md5sum
098f6bcd4621d373cade4e832627b4f6 -
使用printf
:
$ printf "%s" "test" | md5sum
098f6bcd4621d373cade4e832627b4f6 -
仅使用md5sum
命令:
(让我们写md5sum
,按Enter然后写字符串test
,然后按双组合Ctrl+ d)
$ md5sum
test098f6bcd4621d373cade4e832627b4f6 -
使用md5sum -
命令:
(让我们写md5sum -
,按Enter然后写字符串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
WITHOUT -n
:
echo "test" | md5sum
d8e8fca2dc0f896fd7cb4cb0031ba249 -
$ md5sum <<< "test"
d8e8fca2dc0f896fd7cb4cb0031ba249 -
编写文本后,仅使用md5sum
命令但使用Enterkey:
(让我们写md5sum
,按Enter然后写字符串test
,然后按agaien Enter和一次组合Ctrl+ d)
$ md5sum
test
d8e8fca2dc0f896fd7cb4cb0031ba249 -
编写文本后,使用md5sum -
命令但使用Enter键:
(让我们写md5sum -
,按Enter然后写字符串test
,然后按agaien Enter和一次组合Ctrl+ d)
$ md5sum -
test
d8e8fca2dc0f896fd7cb4cb0031ba249 -
md5 -s abcdefg