使用openssl解密密码

使用openssl解密密码

我有一个旧的 shell 脚本,由不再在公司工作的人创建,用于加密和解密我们的访问密码。旧的脚本基本上是这样的:

PFILE=/home/user/keys/pwfile
if [ ! -f $PFILE ] || [[ "$NEW_FILE" == "true" ]]; then
    rm -rf $PFILE
    echo "PASSWORD=notset" >> $PFILE
fi
if [ -n "$PASSWORD" ]; then
    echo "changing PASSWORD"
    P=`echo ${PASSWORD} | openssl enc -aes-128-cbc -a -salt -pass pass:${SECRET}`
    sed -i "/PASSWORD=/ s|=.*|=${P}|" ${PFILE}
fi

解密脚本基本上是这样做的:

PASSWORD=$(sed -n 's|^PASSWORD=||p' $PFILE)
password=`echo $PASSWORD | openssl enc -aes-128-cbc -a -d -salt -pass pass:${SECRET}`

但现在当我运行这个时,我收到错误:

*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.

我创建了一个测试脚本来尝试这个新版本,它看起来像这样:

P=`echo 'rawpassword' | openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 1000 -salt -pass pass:'secret'`    
echo "P = " $P    
U= `echo P | openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 1000 -d -salt -pass pass:'secret'`    
echo "U = " $U

似乎它正在加密,但我在解密过程中做错了一些事情,因为它打印了一个空字符串并给出了错误:

error reading input file

我在解密过程中做错了什么?

相关内容