PHPackages                             kozo/cryptenv - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Security](/categories/security)
4. /
5. kozo/cryptenv

ActiveCakephp-plugin[Security](/categories/security)

kozo/cryptenv
=============

CakePHP plugin for encrypting and decrypting environment files using XChaCha20-Poly1305

0.2(7mo ago)0228↓100%MITPHPPHP &gt;=8.1CI passing

Since Oct 10Pushed 7mo agoCompare

[ Source](https://github.com/kozo/cryptenv)[ Packagist](https://packagist.org/packages/kozo/cryptenv)[ RSS](/packages/kozo-cryptenv/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (3)Versions (3)Used By (0)

Cryptenv Plugin for CakePHP
===========================

[](#cryptenv-plugin-for-cakephp)

CakePHP用の環境変数ファイル暗号化・復号化プラグインです。

特徴
--

[](#特徴)

- XChaCha20-Poly1305 (libsodium) を使用した安全な暗号化
- Base64エンコードされたキーのサポート
- 複数の環境ファイル (.env.production, .env.staging など) のサポート
- CakePHPのコマンドラインインターフェースとの統合

要件
--

[](#要件)

- CakePHP 5.x
- PHP 8.1以上
- libsodium 拡張 (通常はPHP 7.2以降でデフォルトで有効)

インストール
------

[](#インストール)

Composerを使用してプラグインをインストールします:

```
composer require kozo/cryptenv
```

プラグインを有効化するには、`src/Application.php` の `bootstrap()` メソッドに以下を追加してください:

```
$this->addPlugin('Cryptenv');
```

または、CakePHPのプラグインコマンドを使用して有効化できます:

```
bin/cake plugin load Cryptenv
```

使用方法
----

[](#使用方法)

### 暗号化キーの生成

[](#暗号化キーの生成)

まず、暗号化に使用する32バイトのランダムキーを生成します:

```
php -r "echo 'base64:' . base64_encode(random_bytes(32)) . PHP_EOL;"
```

このコマンドは `base64:` プレフィックス付きのキーを出力します。このキーを安全に保管してください。

### 環境ファイルの暗号化

[](#環境ファイルの暗号化)

#### 対話モード（キーなしで実行）

[](#対話モードキーなしで実行)

キーを指定せずに実行すると、対話モードで新しいキーを生成できます:

```
bin/cake env encrypt --env production
```

対話モードでは以下の選択肢が表示されます:

1. 新しい暗号化キーを生成するか確認
2. 生成されたキーをすぐに使用して暗号化するか確認

#### キーを指定して暗号化

[](#キーを指定して暗号化)

デフォルトの `.env` ファイルを暗号化:

```
bin/cake env encrypt --key base64:YOUR_BASE64_ENCODED_KEY
```

特定の環境ファイルを暗号化:

```
bin/cake env encrypt --key base64:YOUR_BASE64_ENCODED_KEY --env production
```

オプション:

- `--key, -k`: 暗号化キー（省略時は対話モード）
- `--env, -e`: 環境名 (例: production, staging)
- `--force, -f`: 既存の暗号化ファイルを上書き
- `--prune, -p`: 暗号化後に元のファイルを削除

### 環境ファイルの復号化

[](#環境ファイルの復号化)

暗号化されたファイルを復号化:

```
bin/cake env decrypt --key base64:YOUR_BASE64_ENCODED_KEY
```

特定の環境ファイルを復号化:

```
bin/cake env decrypt --key base64:YOUR_BASE64_ENCODED_KEY --env production
```

カスタムパスとファイル名で復号化:

```
bin/cake env decrypt --key base64:YOUR_BASE64_ENCODED_KEY --path /path/to/output --filename .env.local
```

オプション:

- `--key, -k`: 復号化キー (必須)
- `--env, -e`: 環境名 (例: production, staging)
- `--force, -f`: 既存のファイルを上書き
- `--path`: 復号化ファイルの出力先パス
- `--filename`: 復号化ファイルのファイル名

使用例
---

[](#使用例)

### 本番環境への展開ワークフロー

[](#本番環境への展開ワークフロー)

1. **開発環境で環境ファイルを暗号化**:

    ```
    # キーを生成
    php -r "echo 'base64:' . base64_encode(random_bytes(32)) . PHP_EOL;" > encryption_key.txt

    # 本番用の .env.production を暗号化
    bin/cake env encrypt --key $(cat encryption_key.txt) --env production
    ```
2. **暗号化されたファイルをバージョン管理にコミット**:

    ```
    git add config/.env.production.encrypted
    git commit -m "Add encrypted production environment file"
    ```
3. **本番環境で復号化**:

    ```
    # 環境変数またはシークレット管理システムからキーを取得
    bin/cake env decrypt --key $ENCRYPTION_KEY --env production
    ```

### 複数環境の管理

[](#複数環境の管理)

```
# ステージング環境を暗号化
bin/cake env encrypt --key base64:STAGING_KEY --env staging

# 本番環境を暗号化
bin/cake env encrypt --key base64:PRODUCTION_KEY --env production

# それぞれを復号化
bin/cake env decrypt --key base64:STAGING_KEY --env staging
bin/cake env decrypt --key base64:PRODUCTION_KEY --env production
```

セキュリティに関する注意事項
--------------

[](#セキュリティに関する注意事項)

1. **暗号化キーを安全に保管**: 暗号化キーは絶対にバージョン管理システムにコミットしないでください。環境変数やシークレット管理システム (AWS Secrets Manager, HashiCorp Vault など) を使用してください。
2. **暗号化されていないファイルを .gitignore に追加**:

    ```
    config/.env
    config/.env.*
    !config/.env.*.encrypted
    !config/.env.example

    ```
3. **本番環境でのキーの管理**: CI/CDパイプラインやデプロイメントスクリプトで暗号化キーを環境変数として設定してください。

技術詳細
----

[](#技術詳細)

### 暗号化アルゴリズム

[](#暗号化アルゴリズム)

このプラグインは **XChaCha20-Poly1305** (AEAD) を使用しています:

- **XChaCha20**: ストリーム暗号 (ChaCha20の拡張版で、より大きなnonceをサポート)
- **Poly1305**: メッセージ認証コード (MAC)
- **AEAD**: 認証付き暗号化により、データの機密性と完全性を保証

### ファイル形式

[](#ファイル形式)

暗号化されたファイルは以下の形式で保存されます:

```
base64_encode(nonce + ciphertext)

```

- **nonce**: 24バイトのランダムな値 (SODIUM\_CRYPTO\_AEAD\_XCHACHA20POLY1305\_IETF\_NPUBBYTES)
- **ciphertext**: 暗号化されたデータ + 認証タグ

トラブルシューティング
-----------

[](#トラブルシューティング)

### "The encryption key must be 32 bytes" エラー

[](#the-encryption-key-must-be-32-bytes-エラー)

暗号化キーは正確に32バイトである必要があります。`base64:` プレフィックスを使用する場合、プレフィックスの後の部分をbase64デコードした結果が32バイトである必要があります。

### "Decryption failed" エラー

[](#decryption-failed-エラー)

- 正しい暗号化キーを使用しているか確認してください
- 暗号化されたファイルが破損していないか確認してください
- 暗号化と復号化で同じキーを使用しているか確認してください

ライセンス
-----

[](#ライセンス)

このプラグインはMITライセンスの下で公開されています。

参考
--

[](#参考)

このプラグインはLaravelの環境変数暗号化機能にインスパイアされています:

- [Laravel EnvironmentEncryptCommand](https://github.com/laravel/framework/blob/11.x/src/Illuminate/Foundation/Console/EnvironmentEncryptCommand.php)
- [Laravel EnvironmentDecryptCommand](https://github.com/laravel/framework/blob/11.x/src/Illuminate/Foundation/Console/EnvironmentDecryptCommand.php)

###  Health Score

33

—

LowBetter than 74% of packages

Maintenance69

Regular maintenance activity

Popularity15

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity35

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

211d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/11993e1bc87ed0dd4a9c11b61907b373204de9af63971d97cceb3f6142c4aa2c?d=identicon)[saku](/maintainers/saku)

---

Top Contributors

[![kozo](https://avatars.githubusercontent.com/u/285535?v=4)](https://github.com/kozo "kozo (9 commits)")

---

Tags

pluginencryptioncakephpXchacha20Poly1305environmentenvsodium

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/kozo-cryptenv/health.svg)

```
[![Health](https://phpackages.com/badges/kozo-cryptenv/health.svg)](https://phpackages.com/packages/kozo-cryptenv)
```

###  Alternatives

[johnathanmiller/secure-env-php

Encrypt environment files for production use.

6054.3k2](/packages/johnathanmiller-secure-env-php)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
