如何解密以前在BASH中加密的字符串?

时间:2013-11-08 16:52:20

标签: 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
......

我认为使用这样的东西生成cripted密码:

perl -e 'print unpack "H*","yourpassword"'

和类似的东西来描述它

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

但它不起作用。 有人可以帮我吗?

2 个答案:

答案 0 :(得分:0)

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

相反,请将密码传递给wget,以便人们无法从ps输出中获取密码。这是一种方法:

wget -v "$HOST" --http-user="$USER" --no-check-certificate --config=/dev/stdin <<< "http_password = $PASSWORD"

答案 1 :(得分:0)

问题解决了:

echo $ password | openssl enc -base64 -d