ランダムなパスワード生成器の開発

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このプロジェクトでは、特定のセキュリティ要件を満たすランダムなパスワード生成スクリプトを作成する方法を学びます。このスクリプトは、少なくとも 1 つの数字、1 つの大文字、1 つの小文字、および ><+-{}:.&; のセットからの 1 つの特殊文字を含む 12 文字のパスワードを生成します。このプロジェクトは、スクリプト作成とランダムデータの操作に関する実践的な経験を提供します。

👀 プレビュー

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

🎯 タスク

このプロジェクトでは、次のことを行います。

  • プロジェクト環境をセットアップし、必要なスクリプトファイルを作成します。
  • 指定された複雑さ要件を満たすランダムなパスワードを生成するロジックを実装します。
  • パスワード生成スクリプトをテストして、正しく機能することを確認します。

🏆 成果

このプロジェクトを完了すると、次のことができるようになります。

  • ランダムなパスワード生成スクリプトの作成プロセスを理解する。
  • 特定の文字型要件を満たすパスワード生成アルゴリズムを実装する。
  • 生成されたパスワードをテストして検証し、望ましい基準を満たしていることを確認する。

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicSystemCommandsGroup -.-> linux/test("Condition Testing") linux/BasicFileOperationsGroup -.-> linux/touch("File Creating/Updating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/TextProcessingGroup -.-> linux/tr("Character Translating") linux/VersionControlandTextEditorsGroup -.-> linux/vim("Text Editing") subgraph Lab Skills linux/echo -.-> lab-301485{{"ランダムなパスワード生成器の開発"}} linux/test -.-> lab-301485{{"ランダムなパスワード生成器の開発"}} linux/touch -.-> lab-301485{{"ランダムなパスワード生成器の開発"}} linux/cd -.-> lab-301485{{"ランダムなパスワード生成器の開発"}} linux/tr -.-> lab-301485{{"ランダムなパスワード生成器の開発"}} linux/vim -.-> lab-301485{{"ランダムなパスワード生成器の開発"}} end

プロジェクト環境をセットアップする

このステップでは、作業環境を準備し、パスワード生成スクリプト用の必要なファイルを作成します。

  1. ターミナルを開き、cd コマンドを使用して /home/labex/project ディレクトリに移動します。

    cd /home/labex/project
  2. touch コマンドを使用して、新しいファイル genpass.sh を作成します。これがパスワード生成スクリプトを記述するファイルになります。

    touch genpass.sh
  3. 好きなテキストエディタ(nanovim など)を使って genpass.sh ファイルを開きます。ファイルの最初に次のシャバン行を追加します。

    #!/bin/zsh
    
    ## ランダムなパスワード生成
    ## このスクリプトは指定された要件を満たすランダムなパスワードを生成します。

    この行は、システムにスクリプトを実行するために zsh シェルを使用するように指示します。シャバン行の後のコメントは、スクリプトの概要を説明しています。

パスワード生成ロジックを実装する

このステップでは、genpass.sh スクリプトにコアロジックを追加して、複雑さ要件を満たすランダムなパスワードを生成します。

  1. genpass.sh ファイルの中に、次の関数を追加してパスワードを生成します。

    ## ランダムなパスワードを生成する関数
    generate_password() {
      local length=12
      local password=''
    
      ## 特殊文字
      local special_chars='><+-{}:.&;'
      local special_char="${special_chars:$RANDOM%${#special_chars}:1}"
      password+="$special_char"
    
      ## 数字
      local digits='0123456789'
      local digit="${digits:$RANDOM%${#digits}:1}"
      password+="$digit"
    
      ## 大文字
      local upper_case='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
      local upper="${upper_case:$RANDOM%${#upper_case}:1}"
      password+="$upper"
    
      ## 小文字
      local lower_case='abcdefghijklmnopqrstuvwxyz'
      local lower="${lower_case:$RANDOM%${#lower_case}:1}"
      password+="$lower"
    
      ## 残りの文字
      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
    
      ## パスワードの文字の順序をシャッフルする
      password=$(echo "$password" | fold -w1 | shuf | tr -d '\n')
    
      echo "$password"
    }

    この関数は以下のように機能します。

    • 基本要件を満たすために、1 つの特殊文字、1 つの数字、1 つの大文字、1 つの小文字でパスワードを初期化します。
    • 望ましい 12 文字の長さに達するための残りの文字数を計算します。
    • 数字、文字(大文字と小文字両方)、特殊文字のプールから残りの文字をランダムに選択します。
    • 特定の文字が常に先頭にならないようにパスワードをシャッフルします。
  2. genpass.sh ファイルの末尾に次のコードを追加します。このスクリプトのこの部分は generate_password 関数を呼び出し、生成されたパスワードをコンソールに出力します。

    ## パスワードを生成して出力する
    generate_password

パスワード生成器をテストする

このステップでは、genpass.sh スクリプトをテストして、すべての要件を満たすパスワードが生成されることを確認します。

  1. テキストエディタで genpass.sh ファイルを保存します。

  2. ターミナルで、chmod コマンドを使用してスクリプトを実行可能にします。

    chmod +x genpass.sh

    このコマンドは、ファイルに実行権限を追加し、プログラムとして実行できるようにします。

  3. 次のコマンドを使用してスクリプトを実行します。

    sh genpass.sh

    スクリプトはコンソールにランダムな 12 文字のパスワードを出力するはずです。出力には少なくとも 1 つの特殊文字、1 つの数字、1 つの大文字、1 つの小文字が含まれている必要があります。

    ## 例
    2Dsxw9+xS:27
  4. スクリプトをもう何度か実行します。毎回、異なるパスワードが生成されるはずです。これにより、パスワード生成器のランダム性が正しく機能することが確認されます。

おめでとうございます!指定された複雑さ要件を満たすランダムなパスワード生成器を正常に実装してテストしました。

✨ 解答を確認して練習

まとめ

おめでとうございます!このプロジェクトを完了し、ランダムなパスワード生成器スクリプトを作成しました。これで、将来のスクリプト作成プロジェクトの基礎を築くことができます。
LabEx のさまざまな実験を通じてさらに練習することで、技術力をさらに向上させることができます。