더 이상 회사에서 일하지 않는 사람이 만든 오래된 쉘 스크립트가 있는데, 이 스크립트는 액세스 비밀번호를 암호화하고 해독합니다. 이전 스크립트는 기본적으로 다음과 같았습니다.
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
암호 해독 중에 내가 뭘 잘못하고 있나요?