如何直接在终端中获取字符串的MD5哈希值?
如何直接从终端获取字符串的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
结束输入。
openssl md5 filename openssl sha1 filename
对于字符串管道内容使用echo
echo -n 123456 | openssl md5
我快速戳一下--help
for md5sum
演示了这个命令:
md5sum -
然后会给出简单输入的提示。 输入一些文本然后使用Enter然后按Ctrl + D表示文件结尾然后导致md5sum
吐出您输入的原始文本的MD5(包括Enter ,它是CR,IIRC)。
更少的类型,没有管道! 并避免在shell历史记录中记录您的明文密码! 呜!
如果你不想要那个尾随CR(通常是你想要哈希密码的情况),不要在Ctrl + D之前按 Enter键 ,而是两次输入Ctrl + D.
在我的脚本中,我发现有两件事你应该知道这个问题。
- 如果你
echo "$myvariable"
或echo -n "$myvariable"
并不重要,但是你应该总是对字符串使用doubleqoutes并且总是使用相同的方法。 如果不是事情就不匹配了。 -
在输出中,您总是得到一个尾随空格和一个破折号,如示例所示:
$ echo -n Welcome | md5sum 7803ffcaea43bb81a439fde13b29bc35 -
要摆脱它,只留下代码7803ffcaea43bb81a439fde13b29bc35
,执行: echo "$myvariable" | md5sum | cut -d" " -f1
echo "$myvariable" | md5sum | cut -d" " -f1