무작위 비밀번호 생성기 개발

LinuxBeginner
지금 연습하기

소개

이 프로젝트에서는 특정 보안 요구 사항을 충족하는 무작위 비밀번호 생성 스크립트를 만드는 방법을 배우게 됩니다. 이 스크립트는 숫자 1 개 이상, 대문자 1 개 이상, 소문자 1 개 이상, 그리고 ><+-{}:.&; 세트에서 특수 문자 1 개 이상을 포함하는 12 자 비밀번호를 생성합니다. 이 프로젝트는 스크립팅 및 무작위 데이터 작업에 대한 실질적인 경험을 제공합니다.

👀 미리보기

$ cd /home/labex/project
$ sh genpass.sh
## Example
2Dsxw9+xS:27

🎯 과제

이 프로젝트에서는 다음을 수행합니다.

  • 프로젝트 환경을 설정하고 필요한 스크립트 파일을 생성합니다.
  • 지정된 복잡성 요구 사항을 충족하는 무작위 비밀번호를 생성하는 로직을 구현합니다.
  • 비밀번호 생성 스크립트가 올바르게 작동하는지 테스트합니다.

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다.

  • 무작위 비밀번호 생성 스크립트를 만드는 과정을 이해합니다.
  • 특정 문자 유형 요구 사항을 충족하는 비밀번호 생성 알고리즘을 구현합니다.
  • 생성된 비밀번호가 원하는 기준을 충족하는지 테스트하고 검증합니다.

프로젝트 환경 설정

이 단계에서는 작업 환경을 준비하고 비밀번호 생성 스크립트에 필요한 파일을 생성합니다.

  1. 터미널을 열고 cd 명령을 사용하여 /home/labex/project 디렉토리로 이동합니다.

    cd /home/labex/project
  2. touch 명령을 사용하여 genpass.sh라는 새 파일을 생성합니다. 이 파일은 비밀번호 생성 스크립트를 작성할 파일입니다.

    touch genpass.sh
  3. 텍스트 편집기에서 genpass.sh 파일을 엽니다. nano, vim 또는 선호하는 텍스트 편집기를 사용할 수 있습니다. 파일 맨 처음에 다음 shebang 라인을 추가합니다.

    #!/bin/zsh
    
    ## Random Password Generator
    ## This script generates a random password that meets the specified requirements.

    이 라인은 시스템에 zsh 쉘을 사용하여 스크립트를 실행하도록 지시합니다. shebang 라인 뒤의 주석은 스크립트에 대한 간략한 설명을 제공합니다.

비밀번호 생성 로직 구현

이 단계에서는 복잡성 요구 사항을 충족하는 무작위 비밀번호를 생성하기 위해 genpass.sh 스크립트에 핵심 로직을 추가합니다.

  1. genpass.sh 파일 내에 다음 함수를 추가하여 비밀번호를 생성합니다.

    ## Function to generate a random password
    generate_password() {
      local length=12
      local password=''
    
      ## Special characters
      local special_chars='><+-{}:.&;'
      local special_char="${special_chars:$RANDOM%${#special_chars}:1}"
      password+="$special_char"
    
      ## Digits
      local digits='0123456789'
      local digit="${digits:$RANDOM%${#digits}:1}"
      password+="$digit"
    
      ## Uppercase letters
      local upper_case='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
      local upper="${upper_case:$RANDOM%${#upper_case}:1}"
      password+="$upper"
    
      ## Lowercase letters
      local lower_case='abcdefghijklmnopqrstuvwxyz'
      local lower="${lower_case:$RANDOM%${#lower_case}:1}"
      password+="$lower"
    
      ## Remaining characters
      local remaining_length=$((length - 4))
      local characters='><+-{}:.&;0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
      local num_characters=${#characters}
    
      for ((i = 0; i < remaining_length; i++)); do
        local random_char="${characters:$RANDOM%$num_characters:1}"
        password+="$random_char"
      done
    
      ## Shuffle the order of password characters
      password=$(echo "$password" | fold -w1 | shuf | tr -d '\n')
    
      echo "$password"
    }

    이 함수는 다음과 같이 작동합니다.

    • 기본 기준을 충족하기 위해 특수 문자 1 개, 숫자 1 개, 대문자 1 개, 소문자 1 개로 비밀번호를 초기화합니다.
    • 원하는 길이인 12 자에 도달하기 위해 남은 문자 수를 계산합니다.
    • 숫자, 문자 (대문자 및 소문자 모두) 및 특수 문자의 풀에서 나머지 문자를 무작위로 선택합니다.
    • 특정 문자가 항상 처음에 오지 않도록 비밀번호를 섞습니다.
  2. genpass.sh 파일의 끝에 다음 코드를 추가합니다. 이 스크립트 부분은 generate_password 함수를 호출하고 생성된 비밀번호를 콘솔에 출력합니다.

    ## Generate password and output
    generate_password

비밀번호 생성기 테스트

이 단계에서는 genpass.sh 스크립트를 테스트하여 모든 요구 사항을 충족하는 비밀번호를 생성하는지 확인합니다.

  1. 텍스트 편집기에서 genpass.sh 파일을 저장합니다.

  2. 터미널에서 chmod 명령을 사용하여 스크립트를 실행 가능하게 만듭니다.

    chmod +x genpass.sh

    이 명령은 파일에 실행 권한을 추가하여 프로그램으로 실행할 수 있도록 합니다.

  3. 다음 명령을 사용하여 스크립트를 실행합니다.

    sh genpass.sh

    스크립트는 무작위 12 자 비밀번호를 콘솔에 출력해야 합니다. 출력에는 최소 하나의 특수 문자, 하나의 숫자, 하나의 대문자 및 하나의 소문자가 포함되어야 합니다.

    ## Example
    2Dsxw9+xS:27
  4. 스크립트를 몇 번 더 실행합니다. 매번 다른 비밀번호가 생성되어야 합니다. 이는 비밀번호 생성기의 무작위성이 올바르게 작동하는지 확인합니다.

축하합니다! 지정된 복잡성 요구 사항을 충족하는 무작위 비밀번호 생성기를 성공적으로 구현하고 테스트했습니다.

✨ 솔루션 확인 및 연습

요약

축하합니다! 이 프로젝트를 완료하고 무작위 비밀번호 생성기 스크립트를 만들었습니다. 이제 향후 스크립팅 프로젝트를 위한 기반을 갖추게 되었습니다.

LabEx 에서 더 많은 랩을 통해 계속 연습하여 기술을 더욱 향상시킬 수 있습니다.