기본 openssl 암호화 스크립트 문제

기본 openssl 암호화 스크립트 문제

나는 현재 bash 스크립팅 지식을 향상시키기 위해 일련의 연습을 하고 있습니다.

제가 하고 있는 연습은 다음과 같습니다. 파일을 암호화하는 encrypt.sh라는 스크립트를 작성하는 것입니다. 스크립트 요구 사항은 다음과 같습니다.

  1. 파일을 암호화하려면 openssl을 사용해야 합니다.
  2. 암호화할 파일 이름을 매개변수로 사용해야 합니다.
  3. 파일을 암호화할 때 이름은 동일하지만 ".enc"가 추가된 파일에 암호화된 버전을 넣어야 합니다.
  4. 다른 사용자와 함께 시스템에서 실행하는 것이 안전해야 합니다. 즉, 어떤 암호도 명령줄 인수로 전달할 수 없습니다.
  5. ENCRYPTION_KEY라는 환경 변수에서 사용할 비밀번호를 읽어야 합니다.
  6. 이 환경 변수가 설정되지 않은 경우 사용자에게 비밀번호를 묻는 메시지가 표시되고 해당 비밀번호를 사용해야 합니다.
  7. 인수가 제공되지 않으면 오류가 표시되고 종료 코드 2로 종료됩니다.
  8. 사용자가 --help 스위치를 사용하여 스크립트를 호출하면 메시지가 표시되어야 합니다.
  9. 이름에 공백이 있는 파일에 대해 작동합니다.

현재 스크립트가 이미 요구 사항 1-5,7-8을 충족하는 것 같습니다. 그런데 6번과 9번이 좀 헷갈리네요.

제가 현재 작업하고 있는 작업이나 누락된 요구 사항에 대한 솔루션에 대한 피드백을 주시면 매우 감사하겠습니다.

미리 감사드립니다.

usage="Usage: Enter the name of the file you would like to encrypt as a parameter, eg. $0 words"
ENCRYPTION_KEY="1234"
export ENCRYPTION_KEY
openssl enc -e -aes256 -in "$1" -out "$1".enc -pass env:ENCRYPTION_KEY
if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
    echo $usage
fi

if test -z ${1}
    then
        echo "${0} :ERROR: No parameters provided. Please see -h or --help for usage." 1>&2
        exit 1
fi

#DECODE (script is not required to decode, just here for testing purposes)
#openssl enc -d -aes256 -in words.enc -out words.enc.dec -pass env:ENCRYPTION_KEY

답변1

#6의 경우,read내장 함수도움이 될거야. #9의 경우 변수 이름을 사용할 때마다 큰따옴표로 묶어야 합니다.

관련 정보