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

PHP 暗号化を Mcrypt から OpenSSL に安全に移行するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-03 16:30:14270ブラウズ

How Can I Safely Migrate My PHP Encryption from Mcrypt to OpenSSL?

暗号化の問題の回避: 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 を使用して再暗号化する必要があります。

追加の問題への対処

さらに、元のコードには暗号化に関するいくつかの重大な問題があります。

  • 認証の不在 (次を使用して簡単に追加できます) HMACs)
  • 不適切なパディング (PKCS#5 パディングが推奨されます)
  • 非バイトセーフ操作 (例: mb_substr())

OpenSSL はパディングを簡素化します。ただし、defuse/php-encryption のような専用の暗号化ライブラリを使用すると、セキュリティと利便性を向上させることができます。

結論

Mcrypt から OpenSSL に移行するには、これらの暗号化の微妙な点を慎重に考慮する必要があります。データを再暗号化し、追加の脆弱性に対処することで、開発者は Mcrypt サポートがない場合でもアプリケーションを効果的に保護し続けることができます。 OpenSSL と defuse/php-encryption は、信頼性の高い暗号化のための堅牢な代替手段を提供します。

以上がPHP 暗号化を Mcrypt から OpenSSL に安全に移行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。