PHP 7.2 の出現により、人気の Mcrypt 拡張機能は段階的に廃止されます。開発者としては、この変更に備え、より安全な Openssl 代替案の採用を検討することが重要です。
この記事は、開発者が移行中に直面する共通の課題、つまり、AES 256 を維持しながらコードを Mcrypt から Openssl に変換することに焦点を当てています。 CBC と IV。
次の Mcrypt について考えてみましょう。 code:
function encrypt($masterPassword, $data) { // Mcrypt AES 256 CBC operations $key = mb_substr(hash('SHA256', $masterPassword), 0, $keySize); $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $data, MCRYPT_MODE_CBC, $iv); return base64_encode($iv . $encrypted); } function decrypt($masterPassword, $base64) { // Mcrypt AES 256 CBC operations $key = mb_substr(hash('SHA256', $masterPassword), 0, $keySize); $data = base64_decode($base64); $iv = substr($data, 0, $ivSize); $encrypted = substr($data, $ivSize, strlen($data)); $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $encrypted, MCRYPT_MODE_CBC, $iv); return trim($decrypted); }
このコードを Openssl に変換するには、決定的な違いに注意する必要があります。Mcrypt の Rijndael-256 は AES-256 と同じではありません。 OpenSSL は、256 ビット キーの Rijndael-128 である AES-256 をサポートしています。
したがって、残念ながら、コードを直接変換することはできません。適切な AES-256 操作を使用してすべてのデータを再暗号化する必要があります。
さらに、現在の Mcrypt 暗号化スキームには認証、適切なパディング、およびバイト セーフが欠如しています。セキュリティを向上させるために、defuse/php-encryption などのより堅牢な暗号化ライブラリを採用することを強くお勧めします。
Mcrypt と Openssl の違いを理解し、既存の暗号化スキームの欠点に対処することで、効果的に次のような準備をすることができます。 PHP 7.2 で Mcrypt を削除し、暗号化されたデータの整合性とセキュリティを維持します。
以上がPHP Mcrypt 暗号化コードを PHP 7.2 の OpenSSL に移行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。