Maison  >  Article  >  développement back-end  >  Comment PHP utilise MongoDB pour chiffrer et déchiffrer les données

Comment PHP utilise MongoDB pour chiffrer et déchiffrer les données

王林
王林original
2023-07-07 11:12:251333parcourir

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.

  1. Installer les extensions MongoDB et PHP
    Tout d'abord, vous devez installer la base de données MongoDB et l'extension MongoDB pour PHP. Vous pouvez télécharger la base de données MongoDB via le site officiel et suivre leur guide d'installation. Pour installer l'extension MongoDB pour PHP vous pouvez utiliser la commande PECL : pecl install mongodb。安装完成后,你需要在php.ini文件中添加extension=mongodb.so pour activer l'extension.
  2. Connectez-vous à la base de données MongoDB
    La connexion à la base de données MongoDB à l'aide de PHP est très simple. Il vous suffit de créer un objet client MongoDB à l'aide du constructeur de la classe MongoDB, puis de sélectionner la base de données à laquelle vous souhaitez vous connecter. Voici un exemple de code :
<?php
$mongoClient = new MongoDBClient("mongodb://localhost:27017");
$database = $mongoClient->mydatabase;
?>
  1. Données cryptées
    MongoDB fournit deux méthodes de cryptage symétrique et de cryptage par hachage. Les exemples de codes pour ces deux méthodes de cryptage seront présentés ci-dessous.

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);
?>
  1. Déchiffrement des données
    Le déchiffrement des données cryptées est également simple. Voici un exemple de code pour le cryptage symétrique et le déchiffrement des données cryptées par hachage :

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn