以前在BASH中如何描述字符串?

以前在BASH中如何描述字符串?,bash,passwords,crypt,Bash,Passwords,Crypt,我的脚本有安全问题。我必须给它一个用户名和密码,但我不能给它一个未加密的密码。 这个脚本是用bash编写的 #!/bin/bash HOST=$1 USER=$2 PASSWORD=$3 #PASSWORD=`perl -e 'print pack "H*",$PASSWORD'` wget -v $HOST --http-user=$USER --http-password=$PASSWORD --no-check-certificate ...... 我想用这样的方法来生成脚本化密码: p

我的脚本有安全问题。我必须给它一个用户名和密码,但我不能给它一个未加密的密码。 这个脚本是用bash编写的

#!/bin/bash
HOST=$1
USER=$2
PASSWORD=$3
#PASSWORD=`perl -e 'print pack "H*",$PASSWORD'`
wget -v $HOST --http-user=$USER --http-password=$PASSWORD --no-check-certificate
......
我想用这样的方法来生成脚本化密码:

perl -e 'print unpack "H*","yourpassword"'
还有像这样的东西

descrpt=`perl -e 'print pack "H*","encrypted password"'`

但它不起作用有人能帮我吗?

您的命令没有加密,它只是将密码编码为十六进制字符串。任何看到字符串的程序员都会立即知道如何取回明文密码

相反,将密码传递给
wget
,这样人们就不能从
ps
输出中获取密码。这里有一种方法:

wget -v "$HOST" --http-user="$USER" --no-check-certificate --config=/dev/stdin <<< "http_password = $PASSWORD"
wget-v“$HOST”--http user=“$user”--无检查证书--config=/dev/stdin问题已通过以下方式解决:


echo$password | openssl enc-base64-d

我认为您只需提供纯文本密码,并且在与服务器通信时,
wget
将根据需要对其进行加密。很抱歉,我需要以我的方式提供它,而不是通过stdin,因为它是另一个我不理解的编译脚本的输入。你不是在调用wget吗?