当前位置: 首页>>技术问答>>正文


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

第五种方法

我在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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/375.html,未经允许,请勿转载。