Comment PHP utilise MongoDB pour implémenter le cryptage et le décryptage des données
Dans le développement Web, le cryptage et le décryptage des données sont une mesure de sécurité très importante. MongoDB est une base de données populaire qui offre des fonctionnalités puissantes et une flexibilité pour le cryptage et le déchiffrement des données. Cet article explique comment utiliser MongoDB pour crypter et déchiffrer des données en PHP et fournit des exemples de code correspondants.
pecl install mongodb
。安装完成后,你需要在php.ini文件中添加extension=mongodb.so
pour activer l'extension. <?php $mongoClient = new MongoDBClient("mongodb://localhost:27017"); $database = $mongoClient->mydatabase; ?>
3.1 Cryptage symétrique
Le cryptage symétrique est une méthode de cryptage qui utilise la même clé pour le cryptage et le déchiffrement. Voici un exemple de code utilisant le cryptage symétrique 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 Cryptage par hachage
Le cryptage par hachage est une méthode de cryptage unidirectionnelle qui convertit les données en une valeur de hachage unique. Voici un exemple de code pour le cryptage à l'aide du hachage 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 Décryptage symétrique
Le déchiffrement symétrique nécessite une clé spécifiée. Voici un exemple de code pour le décryptage symétrique :
<?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 Décryptage par hachage
Le cryptage par hachage est une méthode de cryptage unidirectionnelle et ne prend pas en charge le décryptage. Si vous devez vérifier des données chiffrées hachées, vous pouvez utiliser la fonctionnalité de vérification fournie par la base de données.
<?php $collection = $database->mycollection; $hashedData = $collection->findOne(['_id' => $documentId]); if (password_verify($inputPassword, $hashedData->password)) { // 密码验证成功,执行相应操作 } else { // 密码验证失败,执行相应操作 } ?>
En résumé, cet article présente la méthode d'utilisation de MongoDB pour implémenter le cryptage et le déchiffrement des données, et fournit des exemples de code pour le cryptage symétrique et le cryptage par hachage. En appliquant ces technologies de manière appropriée, vous pouvez protéger vos données sensibles et améliorer la sécurité du système. J'espère que cet article vous aidera !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!