PHP AES 暗号化と復号化
問題の説明:
ユーザーは、 AES 暗号化および復号化用の PHP コードを提供しました。これは、結果として得られる暗号化テキストが破損しているためです。復号化されました。この記事では、問題の原因を詳しく調べ、代替の暗号化方法を提供します。
問題の根本原因:
この問題は、ECB (電子コードブック モード) の使用によって発生します。提供されたコード。 ECB モードは安全ではなく、データの整合性と機密性が欠けているため、機密データの暗号化には使用しないでください。
推奨暗号化ライブラリ:
カスタム暗号化を開発する代わりに関数を使用するには、確立された PHP 暗号化ライブラリを活用することを強くお勧めします。これらのライブラリは十分にテストされており、エンドツーエンドの暗号化を提供し、最新のセキュリティ機能で常に更新されています。
拡張暗号化用の libsodium:
If PECL拡張機能をインストールできるため、libsodium は堅牢な暗号化に最適です。高レベルのセキュリティとクロスプラットフォーム互換性を提供し、Java アプレットやネイティブ モバイル アプリなどの非 PHP アプリケーションとのシームレスなデータ交換を可能にします。次のコード例は、libsodium を使用して安全な暗号化と復号化を行う方法を示しています。
// Encrypt a message using libsodium function safeEncrypt($message, $key) { $nonce = \Sodium\randombytes_buf( \Sodium\CRYPTO_SECRETBOX_NONCEBYTES ); return base64_encode( $nonce. \Sodium\crypto_secretbox( $message, $nonce, $key ) ); } // Decrypt a message encrypted using safeEncrypt() function safeDecrypt($encrypted, $key) { $decoded = base64_decode($encrypted); $nonce = mb_substr($decoded, 0, \Sodium\CRYPTO_SECRETBOX_NONCEBYTES, '8bit'); $ciphertext = mb_substr($decoded, \Sodium\CRYPTO_SECRETBOX_NONCEBYTES, null, '8bit'); return \Sodium\crypto_secretbox_open( $ciphertext, $nonce, $key ); }
Halite for Encrypted Cookies Powered by libsodium:
アプリケーションが暗号化された Cookie を必要とする場合, Halite は、Paragon Initiative Enterprises が開発した非常に推奨されるライブラリです。 Halite は、libsodium を使用して暗号化プロセスをカプセル化し、Cookie 管理に便利で安全なソリューションを提供します。
結論:
特定の使用例ではカスタム暗号化方法が魅力的に見えるかもしれませんが、確立された PHP 暗号化ライブラリまたはフレームワークを使用することが、常に最も安全で信頼性の高いオプションです。優れたセキュリティ、継続的なサポート、機密データが十分に保護されているという安心感を提供します。
以上がPHP AES 暗号化および復号化コードが破損しているのはなぜですか? 安全な代替手段は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。