我们遇到了一位老员工多年前写过的数据库备份脚本问题。这会导致digital envelope routines:EVP_DecryptFinal_ex:bad decrypt
错误。作为故障排除步骤,我们希望暂时将加密密码(以其解密形式)硬编码到脚本中,但不知道老员工使用的密码。
他有许多openssl
脚本文件,这些脚本文件以这种方式在他的备份脚本中调用:
#!/bin/bash
# This script requires rsync, openssl, and sshpass to be installed
# Put encrypted passwords into variables with openssl scripts
# Make variables for directory paths so that you only need to change it in one place
# For monthly and weekly scripts
[...]
dbDump(){ # args - $1 = hostname, $2 = databases file name, $3 db backup location $4 backupDir
dbpw=`sh $homeDir/backupScripts/.~1l`
pw1=`sh $homeDir/backupScripts/.~2f`
echo "Getting database list..."
mysql -u xxx -p --password="$dbpw" -h $1 -N -e"show databases" > $2
[...]
脚本文件'(即.~1l
,.~2f
等)内容的格式如下,并包含加密密码:
echo "$(echo XXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX= | openssl enc -des -a -d -pass pass:PASSWORD)"
例如,当我运行sh ./.~1l
时,我得到了相同的“错误解密”错误和一些mumbo jumbo:
XXX@XXX:/home/user/backupScripts$ sh ./.~1l
bad decrypt
139875053102848:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:../crypto/evp/evp_enc.c:536:
�Z��d�n
有什么建议吗?我尝试使用sh
和-nopad
标志在密码脚本上运行-md md5
命令(如其他StackOverflow帖子中有关同一bad decrypt
错误的建议)结果