ホームページ >バックエンド開発 >PHPチュートリアル >Libsodium を使用して PHP でデータを安全に暗号化および復号化するにはどうすればよいですか?

Libsodium を使用して PHP でデータを安全に暗号化および復号化するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-03 21:23:11647ブラウズ

How Can I Securely Encrypt and Decrypt Data in PHP Using Libsodium?

PHP AES 暗号化/復号化

PHP の安全な暗号化技術

データの暗号化と復号化データの機密性を維持するために不可欠です。安全な PHP 暗号化を実現するには、独自の実装を作成するのではなく、実証済みで信頼性の高い暗号化ライブラリを利用することが重要です。

高度な暗号化用の Libsodium

可能であれば、PECL のインストールを検討してください。拡張機能を利用し、暗号化機能を強化するために libsodium を活用します。 Libsodium は、認証された暗号化などの堅牢な暗号化アルゴリズムを提供し、ビット書き換え攻撃に対する保護を保証します。

use Sodium\randombytes_buf;
use Sodium\crypto_secretbox;

function safeEncrypt($message, $key)
{
    $nonce = randombytes_buf(CRYPTO_SECRETBOX_NONCEBYTES);
    return base64_encode($nonce . crypto_secretbox($message, $nonce, $key));
}

function safeDecrypt($encrypted, $key)
{
    $decoded = base64_decode($encrypted);
    $nonce = substr($decoded, 0, CRYPTO_SECRETBOX_NONCEBYTES, '8bit');
    $ciphertext = substr($decoded, CRYPTO_SECRETBOX_NONCEBYTES, null, '8bit');
    return crypto_secretbox_open($ciphertext, $nonce, $key);
}

$key = randombytes_buf(CRYPTO_SECRETBOX_KEYBYTES);
$message = '...';

$ciphertext = safeEncrypt($message, $key);
$plaintext = safeDecrypt($ciphertext, $key);

var_dump($ciphertext);
var_dump($plaintext);

暗号化 Cookie 用 Halite

libsodium を利用した暗号化 Cookie 用の場合は、統合を簡素化する Paragon Initiative Enterprises の Halite ライブラリの使用を検討してください。

ベスト プラクティス

安全な暗号化については、次のベスト プラクティスに従ってください。

  • 認証された AES-256 などの強力な暗号化アルゴリズムを使用します。追加データによる暗号化 (AEAD)、または ChaCha20.
  • 生成暗号学的に安全な擬似乱数生成器 (CSPRNG) を使用した非決定的キー。
  • キーが危険にさらされたり、意図しない個人にアクセス可能になったりしないようにします。
  • 暗号化されたデータを安全な方法で保存し、安全な方法で保存します。データ侵害に対する耐性があります。

以上がLibsodium を使用して PHP でデータを安全に暗号化および復号化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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