>  기사  >  백엔드 개발  >  PHP가 MongoDB를 사용하여 데이터를 암호화하고 해독하는 방법

PHP가 MongoDB를 사용하여 데이터를 암호화하고 해독하는 방법

王林
王林원래의
2023-07-07 11:12:251386검색

PHP가 MongoDB를 사용하여 데이터 암호화 및 암호 해독을 구현하는 방법

웹 개발에서 데이터 암호화 및 암호 해독은 매우 중요한 보안 조치입니다. MongoDB는 데이터 암호화 및 해독을 위한 강력한 기능과 유연성을 제공하는 인기 있는 데이터베이스입니다. 이 기사에서는 MongoDB를 사용하여 PHP에서 데이터를 암호화 및 해독하는 방법을 소개하고 해당 코드 예제를 제공합니다.

  1. MongoDB 및 PHP 확장 설치
    먼저 MongoDB 데이터베이스와 PHP용 MongoDB 확장을 설치해야 합니다. 공식 웹사이트를 통해 MongoDB 데이터베이스를 다운로드하고 설치 가이드를 따를 수 있습니다. PHP용 MongoDB 확장을 설치하려면 PECL 명령을 사용하여 pecl install mongodb。安装完成后,你需要在php.ini文件中添加extension=mongodb.so 확장을 활성화할 수 있습니다.
  2. MongoDB 데이터베이스에 연결
    PHP를 사용하여 MongoDB 데이터베이스에 연결하는 것은 매우 간단합니다. MongoDB 클래스의 생성자를 사용하여 MongoDB 클라이언트 객체를 생성하고 연결하려는 데이터베이스를 선택하기만 하면 됩니다. 다음은 샘플 코드입니다.
<?php
$mongoClient = new MongoDBClient("mongodb://localhost:27017");
$database = $mongoClient->mydatabase;
?>
  1. 암호화된 데이터
    MongoDB는 대칭 암호화와 해시 암호화의 두 가지 방법을 제공합니다. 이 두 가지 암호화 방법에 대한 샘플 코드는 아래에 소개됩니다.

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);
?>
  1. 데이터 해독
    암호화된 데이터를 해독하는 것도 간단합니다. 다음은 해시 암호화된 데이터의 대칭 암호화 및 복호화를 위한 샘플 코드입니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.