rust_unique_pass 0.11.0

A CLI tool for generating a strong password.
Documentation
## Rust Unique Pass

このソフトウェアは、ランダムな強力なパスワードを生成するためのものです。<br>
利用者はパスワードの長さや使用する特殊文字などをカスタマイズすることができます。<br>
翻訳用のFTLファイル以外は全てRust言語で書かれています。

## インストール

事前に`Rust`がインストールされていることを確認してください。<br>
インストールされていない場合は、[Rustの公式サイト](https://www.rust-lang.org/)を参照してください。<br>
インストール済みの場合は、下記のコマンドを実行してください。<br>

```zsh
cargo install rust_unique_pass
```

## 使い方

CLIツールなのでコマンドラインから実行してください。<br>
コマンド名は`rupass`です。

### コマンドラインオプション

`rupass`
は、パスワード生成を細かく制御するためのいくつかのコマンドラインオプションを提供します。

| オプション (短縮形) | オプション (完全形) | 説明 |
| :-- | :-- | :-- |
| `-l` | `--language` | 言語を指定(ISO639-3: `eng`, `jpn`, `deu`)。既定: 英語。 |
| `-p` | `--password-length` | パスワード長を指定。`--no-prompt` と併用時は必須。 |
| `-a` | `--all` | 数字・大文字・小文字・記号をまとめてON。 |
| `--no-prompt` |  | 対話を行わず、未指定の文字種はOFFのまま進む(文字種未選択なら即エラー)。 |
| `-n` | `--numbers` / `--no-numbers` | 数字を含める / 含めない(既定: OFF)。 |
| `-u` | `--uppercase` / `--no-uppercase` | 大文字を含める / 含めない(既定: OFF)。 |
| `-w` | `--lowercase` / `--no-lowercase` | 小文字を含める / 含めない(既定: OFF)。 |
| `-s` | `--symbols` / `--no-symbols` | 記号を含める / 含めない(既定: OFF、既定集合は `~!@#$%^&*_-+=(){}[]:;<>,.?/`)。 |
|  | `--symbols-set` | `--symbols` 用のカスタム記号セットを指定。 |
|  | `--timeout-ms` (`--budget-ms`) | 強度探索の時間予算(ms)。既定: `150`(>=10)。*上級* |
|  | `--min-score` | 早期終了の目標スコア(0..=4)。既定: `4`*上級* |
|  | `--strict` | 目標未達なら失敗(終了コード3)。*上級* |
|  | `--show-strength` | 成功時に強度(スコア/エントロピー)を表示。 |
|  | `--quiet` (`--porcelain`) | パスワードのみ出力。見出し/警告を抑制。*上級* |

**コマンド例:**

- 何も指定しない場合はすべての文字種がOFFで、対話的に確認されます。`--no-prompt` を使う場合は、`--password-length` と文字種フラグ(`--numbers` など、または `--all`)を必ず指定してください。

- 長さ32で、数字、大文字、小文字、記号をすべて含むパスワードを生成する:
  ```zsh
  rupass -p 32 -n -u -w -s
  ```
- 日本語表示でパスワードを生成する:
  ```zsh
  rupass -l jpn
  ```

### 時間予算ベースの強度探索

- 既定では 150ms の範囲で zxcvbn のスコア4を目指して候補を探索します。
- 目標スコアに到達した時点で早期終了します。期限内に到達できなかった場合、最良候補を採用し、警告をstderrに出力します(`--strict``--quiet`時を除く)。
- `--show-strength` を付けると、`Strength: 4/4 (entropy: 82.3 bits)` のような強度行を出力します。
- `--strict` のときは、期限内に未達なら終了コード3で失敗し、パスワードは表示しません。

## セキュリティと責任範囲

- **脅威モデル**: 信頼できるローカル環境でのCLI利用を前提とします。ライブなプロセスメモリへのアクセスやOS侵害は対象外です。
- **サイドチャネル**: 定時間系の補助関数はベストエフォートであり、入力長に比例して処理時間が変化します。厳密な定時間保証は行いません。
- **エントロピー方針**: 本番経路ではOS由来エントロピーを毎バイト取得します。決定的RNGはテスト用途のみです。
- **64-bit限定**: 64-bitのみをサポートします。ビルド時にガードを有効化しており、試験的に `--features allow-32bit` で解除できます。

### 注意事項

- デフォルトの言語は英語です。
- 言語は`-l`オプションで指定できます。
- パスワード長は「文字数」と「UTF-8バイト長」の両方で上限を設けています。
- 32-bit 環境は対応していません。

コマンド例

```zsh
rupass -l jpn
```

## 言語について

- **対応言語**
  - 日本語
  - 英語
  - ドイツ語

## 言語の指定方法

`ISO 639-3`で定義されている言語コードを指定してください。<br>
コマンドを下記のようにすることで日本語で利用できます。

```
rupass -l jpn
```

### 注意事項

- デフォルトの言語は英語です。
- 言語は`-l`オプションで指定できます。
  - 英語で使用する場合は`-l`オプションは不要です。
  - 英語での使用例
  ```zsh
  rupass
  ```

## 協力のお願い

このプロジェクトは、多言語対応を目指しています。
翻訳にご協力いただける方は、[CONTRIBUTING](../CONTRIBUTING.md)をご覧ください。

## License

このソフトウェアは`Apache License 2.0`の下で公開されています。<br>
詳細は[LICENSE](../LICENSE)をご覧ください。

Copyright © 2023 Neuron Grid. <br> Licensed under the
[Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0).