ホームページ > バックエンド開発 > PHPチュートリアル > PHP Mcrypt 暗号化コードを PHP 7.2 の OpenSSL に移行するにはどうすればよいですか?

PHP Mcrypt 暗号化コードを PHP 7.2 の OpenSSL に移行するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-06 20:01:12
オリジナル
806 人が閲覧しました

How to Migrate My PHP Mcrypt Encryption Code to OpenSSL in PHP 7.2?

PHP 7.2 での Mcrypt の削除の準備: Mcrypt から Openssl へのコード変換

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート