Cara PHP menggunakan MongoDB untuk melaksanakan penyulitan dan penyahsulitan data
Dalam pembangunan web, penyulitan dan penyahsulitan data ialah langkah keselamatan yang sangat penting. MongoDB ialah pangkalan data popular yang menyediakan ciri berkuasa dan fleksibiliti untuk menyulitkan dan menyahsulit data. Artikel ini akan memperkenalkan cara menggunakan MongoDB untuk menyulitkan dan menyahsulit data dalam PHP, dan memberikan contoh kod yang sepadan.
pecl install mongodb
。安装完成后,你需要在php.ini文件中添加extension=mongodb.so
untuk mendayakan sambungan. <?php $mongoClient = new MongoDBClient("mongodb://localhost:27017"); $database = $mongoClient->mydatabase; ?>
3.1 Penyulitan simetri
Penyulitan simetri ialah kaedah penyulitan yang menggunakan kunci yang sama untuk penyulitan dan penyahsulitan. Berikut ialah contoh kod menggunakan penyulitan simetri 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 Penyulitan cincang
Penyulitan cincang ialah kaedah penyulitan sehala yang menukar data kepada nilai cincang yang unik. Berikut ialah contoh kod untuk penyulitan menggunakan pencincangan 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 Penyahsulitan simetri
Penyahsulitan simetri memerlukan kunci yang ditentukan. Berikut ialah contoh kod untuk penyahsulitan simetri:
<?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 Penyahsulitan cincang
Penyulitan cincang ialah kaedah penyulitan sehala dan ia tidak menyokong penyahsulitan. Jika anda perlu mengesahkan data yang disulitkan dicincang, anda boleh menggunakan fungsi pengesahan yang disediakan oleh pangkalan data.
<?php $collection = $database->mycollection; $hashedData = $collection->findOne(['_id' => $documentId]); if (password_verify($inputPassword, $hashedData->password)) { // 密码验证成功,执行相应操作 } else { // 密码验证失败,执行相应操作 } ?>
Ringkasnya, artikel ini memperkenalkan kaedah menggunakan MongoDB untuk melaksanakan penyulitan dan penyahsulitan data, serta menyediakan contoh kod untuk penyulitan simetri dan penyulitan cincang. Dengan menggunakan teknologi ini dengan sewajarnya, anda boleh melindungi data sensitif anda dan meningkatkan keselamatan sistem. Harap artikel ini membantu anda!
Atas ialah kandungan terperinci Bagaimana PHP menggunakan MongoDB untuk menyulitkan dan menyahsulit data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!