Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana PHP menggunakan MongoDB untuk menyulitkan dan menyahsulit data

Bagaimana PHP menggunakan MongoDB untuk menyulitkan dan menyahsulit data

王林
王林asal
2023-07-07 11:12:251370semak imbas

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.

  1. Pasang sambungan MongoDB dan PHP
    Pertama, anda perlu memasang pangkalan data MongoDB dan sambungan MongoDB untuk PHP. Anda boleh memuat turun pangkalan data MongoDB melalui laman web rasmi dan ikuti panduan pemasangan mereka. Untuk memasang sambungan MongoDB untuk PHP anda boleh menggunakan arahan PECL: pecl install mongodb。安装完成后,你需要在php.ini文件中添加extension=mongodb.so untuk mendayakan sambungan.
  2. Sambung ke pangkalan data MongoDB
    Sambung ke pangkalan data MongoDB menggunakan PHP adalah sangat mudah. Anda hanya mencipta objek klien MongoDB menggunakan pembina kelas MongoDB dan pilih pangkalan data yang ingin anda sambungkan. Berikut ialah kod sampel:
<?php
$mongoClient = new MongoDBClient("mongodb://localhost:27017");
$database = $mongoClient->mydatabase;
?>
  1. Data disulitkan
    MongoDB menyediakan dua kaedah penyulitan simetri dan penyulitan cincang. Kod sampel untuk kedua-dua kaedah penyulitan ini akan diperkenalkan di bawah.

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);
?>
  1. Menyahsulit data
    Menyahsulit data yang disulitkan juga mudah. Berikut ialah kod sampel untuk penyulitan simetri dan penyahsulitan data yang disulitkan cincang:

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn