如何直接在终端中获取字符串的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