PHP が MongoDB を使用してデータの暗号化と復号化を実装する方法
Web 開発では、データの暗号化と復号化は非常に重要なセキュリティ対策です。 MongoDB は、データの暗号化と復号化のための強力な機能と柔軟性を提供する人気のあるデータベースです。この記事では、MongoDB を使用して PHP でデータを暗号化および復号化する方法と、対応するコード例を紹介します。
pecl install mongodb
を使用できます。インストールが完了したら、php.ini ファイルに extension=mongodb.so
を追加して拡張機能を有効にする必要があります。 <?php $mongoClient = new MongoDBClient("mongodb://localhost:27017"); $database = $mongoClient->mydatabase; ?>
3.1 対称暗号化
対称暗号化は、暗号化と復号化に同じキーを使用する暗号化方式です。以下は、MongoDB 対称暗号化を使用したサンプル コードです。
<?php $collection = $database->mycollection; $encryptionData = [ 'name' => 'John Smith', 'email' => 'john@example.com', 'phone' => '1234567890' ]; $encryptionOptions = [ 'keyVaultNamespace' => 'encryption.__keyVault', 'kmsProviders' => [ 'local' => [ 'key' => base64_encode(openssl_random_pseudo_bytes(96)), ], ], 'algorithm' => 'AEAD_AES_256_CBC_HMAC_SHA_512-Random', 'header' => ['keyId' => base64_encode(openssl_random_pseudo_bytes(96))], ]; $command = [ 'encrypt' => $collection->getCollectionName(), 'bsonType' => 'object', 'value' => $encryptionData, 'algorithm' => 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic', ]; $encryptedData = $database->command(['encrypt' => [$command, $encryptionOptions]])->toArray()[0]; $collection->insertOne($encryptedData); ?>
3.2 ハッシュ暗号化
ハッシュ暗号化は、データを一意のハッシュ値に変換する一方向の暗号化方式です。以下は、MongoDB ハッシュを使用した暗号化のサンプル コードです。
<?php $collection = $database->mycollection; $encryptionData = [ 'name' => 'John Smith', 'email' => 'john@example.com', 'phone' => '1234567890' ]; $command = [ 'hash' => $collection->getCollectionName(), 'value' => $encryptionData, 'algorithm' => 'bcrypt' ]; $hashedData = $database->command($command)->toArray()[0]; $collection->insertOne($hashedData); ?>
4.1 対称復号化
対称復号化には、指定されたキーが必要です。以下は対称復号化のサンプル コードです。
<?php $collection = $database->mycollection; $decryptionOptions = [ 'keyVaultNamespace' => 'encryption.__keyVault', 'kmsProviders' => [ 'local' => [ 'key' => $encryptionOptions['kmsProviders']['local']['key'], ], ], ]; $command = [ 'decrypt' => $collection->getCollectionName(), 'bsonType' => 'object', 'value' => $encryptedData, 'algorithm' => 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic', ]; $decryptedData = $database->command(['decrypt' => [$command, $decryptionOptions]])->toArray()[0]; ?>
4.2 ハッシュ復号化
ハッシュ暗号化は一方向の暗号化方式であり、復号化はサポートされていません。ハッシュ暗号化されたデータを検証する必要がある場合は、データベースが提供する検証機能を使用できます。
<?php $collection = $database->mycollection; $hashedData = $collection->findOne(['_id' => $documentId]); if (password_verify($inputPassword, $hashedData->password)) { // 密码验证成功,执行相应操作 } else { // 密码验证失败,执行相应操作 } ?>
要約すると、この記事では、MongoDB を使用してデータの暗号化と復号化を実装する方法を紹介し、対称暗号化とハッシュ暗号化のコード例を示します。これらのテクノロジーを適切に適用することで、機密データを保護し、システムのセキュリティを強化できます。この記事がお役に立てば幸いです!
以上がPHP が MongoDB を使用してデータを暗号化および復号化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。