暗号化の問題の回避: Mcrypt から OpenSSL への移行
レガシー PHP モジュールである Mcrypt は、PHP 7.2 でサポートを終了します。推奨される代替品である OpenSSL は、実装のニュアンスが若干異なります。この記事では、重要な暗号化プロパティを維持しながら、コードを Mcrypt から OpenSSL に効果的に移行する方法について説明します。
Mcrypt コードを OpenSSL に変換する
具体的には、次の Mcrypt コードを考えてみましょう。 AES 256 CBC 暗号化を利用します:
function encrypt($masterPassword, $data) { // ... (Omitted for brevity) return base64_encode($iv . $encrypted); } function decrypt($masterPassword, $base64) { // ... (Omitted for brevity) return trim($decrypted); }
重要な点に注意してくださいRijndael-256 (Mcrypt で使用) は AES-256 (OpenSSL で使用) と同一ではないこと。 OpenSSL には Rijndael-256 サポートがありません。
再暗号化が必要です
したがって、直接変換は実現できません。代わりに、暗号化されたデータはすべて、OpenSSL で AES-256 を使用して再暗号化する必要があります。
追加の問題への対処
さらに、元のコードには暗号化に関するいくつかの重大な問題があります。
OpenSSL はパディングを簡素化します。ただし、defuse/php-encryption のような専用の暗号化ライブラリを使用すると、セキュリティと利便性を向上させることができます。
結論
Mcrypt から OpenSSL に移行するには、これらの暗号化の微妙な点を慎重に考慮する必要があります。データを再暗号化し、追加の脆弱性に対処することで、開発者は Mcrypt サポートがない場合でもアプリケーションを効果的に保護し続けることができます。 OpenSSL と defuse/php-encryption は、信頼性の高い暗号化のための堅牢な代替手段を提供します。
以上がPHP 暗号化を Mcrypt から OpenSSL に安全に移行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。