首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在linux md5sum上删除“-”

在linux md5sum上删除“-”
EN

Stack Overflow用户
提问于 2014-01-18 19:20:32
回答 4查看 8.9K关注 0票数 8

当我试图将密码变量编码到md5sum中时,它给了我一个字符串,其中md5sum编码了在末尾给出了一个破折号。当我试图在它后面放一个破折号时,它就不起作用了。因此,我的问题是:如何删除linux终端的md5sum输出上的破折号?这是我的代码:

代码语言:javascript
复制
#!/bin/bash

read -p 'Password: ' passwordInput
Password=$(echo -n "$passwordInput" | md5sum)
if [ $Password = "0cbc6611f5540bd0809a388dc95a615b" ]; then
    clear
    echo "Password is good"
else
    clear
    echo "Password is bad"
fi
exit 0;
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-01-18 19:31:07

代码语言:javascript
复制
#!/bin/bash

read Test
Password=$(echo -n "$Test" | md5sum | cut -d' ' -f1)
echo ""
if [ $Password = "d41d8cd98f00b204e9800998ecf8427e" ]; then
      clear
      echo "WhOop WHOop"
else
      echo ":("
fi
票数 16
EN

Stack Overflow用户

发布于 2014-01-18 19:43:10

你有三个问题。

首先,你的问题不是很清楚。请更新它,清楚地说明您在问什么(您希望您的程序如何运行,以及它是如何失败的)。在这种情况下,从代码中找出并不太困难,但这并不总是正确的。你写

我无法从linux md5sum中得到"-“。

但事实上,问题是你得到了"-“(可能还有更多)。

(更新:现在更好,谢谢。)

其次,md5sum的输出在显示的校验和之后包含一些额外的信息,您需要删除它。(如果md5sum可以选择只打印校验和,那就太好了,但它没有。)幸运的是,它很容易删除额外的信息;它只是一个空格字符和它之后的一切。

第三,因为您使用的是单引号:

代码语言:javascript
复制
Password="$(echo -n '$Test' | md5sum)"

传递给md5sum的字符串实际上是'$Test',而不是变量的值。

解决第二和第三个问题:

代码语言:javascript
复制
#!/bin/bash

read Test
Password="$(echo -n "$Test" | md5sum | sed 's/ .*$//')"
echo ""
if [ "$Password" = "d41d8cd98f00b204e9800998ecf8427e" ]; then
    clear
    echo "WhOop WHOop"
else
    echo ":("
fi

我通常会批评您使用clear命令,但在这种情况下,您正在删除用户输入的密码。但是,如果用户输入了错误的密码,则不会清除屏幕。Bash的read命令有一个抑制输入回波的选项,这是对它的完美使用。我可以这样做:

代码语言:javascript
复制
#!/bin/bash

read -p "Password: " -s Test
Password="$(echo -n "$Test" | md5sum | sed 's/ .*$//')"
echo ""
if [ "$Password" = "d41d8cd98f00b204e9800998ecf8427e" ]; then
    echo "WhOop WHOop"
else
    echo ":("
fi

(顺便说一句,空字符串是一个糟糕的密码,任何md5sum都可以通过快速的Google搜索找到--比如“Test”。)

票数 5
EN

Stack Overflow用户

发布于 2014-01-18 19:33:22

md5sum中的"-“表示您正在为md5sum使用标准输入。如果要对文件使用md5sum,文件名将显示在该位置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21208736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档