現在の位置: ホーム> 最新記事一覧> PHPデータベース接続におけるデータ暗号化と復号化技術の詳細な説明

PHPデータベース接続におけるデータ暗号化と復号化技術の詳細な説明

M66 2025-06-19

PHPデータベース接続におけるデータ暗号化と復号化技術の詳細な説明

インターネットの開発により、データベースは機密情報を保存および管理するためのコアツールになりました。 PHPアプリケーションでは、ユーザーパスワード、クレジットカード情報などの機密データをデータベースに保存する必要があることがよくあります。したがって、データの暗号化と復号化技術は、データベースのセキュリティを確保するために重要です。

データ暗号化

PHPは、AES(高度な暗号化標準)やRSA(Rivest-Shamir-Adleman)など、さまざまな暗号化アルゴリズムを提供します。データベース接続では、AESアルゴリズムは通常、機密データを暗号化するために使用されます。 AESアルゴリズムを使用してデータを暗号化する方法を示す例を次に示します。

<?php
// コーデュー化関数
function encrypt($data, $key) {
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
    $encrypted = openssl_encrypt($data, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);
    return base64_encode($encrypted . '::' . $iv);
}
?>

次に、PDOを使用してデータベース接続を確立し、暗号化されたデータを保存できます。

<?php
// データベース接続
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$key = "your_encryption_key";

try {
    $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
    $conn-> setAttribute(pdo :: attr_errmode、pdo :: errmode_exception);

    //コーデュー化されるデータ$ data = "sensitive_info";

    //コーデュー化されたデータ$ necryptedData = encrypt($ data、$ key);

    //コーデュー化されたデータをデータベースに保存します$ sql = "挿入テーブル(encrypted_data)values( &#39;$ necrypteddata&#39;)";
    $ conn-> exec($ sql);

    エコー「データはコーデュー化され、普通に保存されます。」;
} catch(pdoexception $ e){
    エコー「エラー:」。 $ e-> getMessage();
}

$ conn = null;
?>

データ復号化

データベースから暗号化されたデータを取得する必要がある場合、復号化テクノロジーがデータの復元に使用されます。 AESアルゴリズムを使用してデータを復号化する方法を示す例を以下に示します。

<?php
// 復号化関数
function decrypt($data, $key) {
    list($encryptedData, $iv) = explode('::', base64_decode($data), 2);
    return openssl_decrypt($encryptedData, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);
}
?>

次のコードは、データベースから暗号化されたデータを取得し、それを復号化する方法を示しています。

<?php
// データベース接続
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$key = "your_encryption_key";

try {
    $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
    $conn-> setAttribute(pdo :: attr_errmode、pdo :: errmode_exception);

    //データベースからコーデュー化されたデータを得る$ sql = "テーブルからコーデュー化された_dataを選択します";
    $ stmt = $ conn-> query($ sql);
    $ result = $ stmt-> fetch();

    // decrypt data $ decrypteddata = decrypt($ result [&#39;encrypted_data&#39;]、$ key);

    エコー「復号化されたデータ:」。 $ decryptedData;
} catch(pdoexception $ e){
    エコー「エラー:」。 $ e-> getMessage();
}

$ conn = null;
?>

要約します

PHPで暗号化と復号化技術を使用することにより、データベース内の機密データのセキュリティを効果的に改善できます。 AESアルゴリズムの暗号化と復号化は、データの機密性を保護するだけでなく、潜在的なデータの漏れを防ぎます。暗号化キーのセキュリティを保護することも重要であることに注意する必要があるため、キーの開示を防ぐために適切な対策を講じる必要があります。

この記事では、特にデータベース接続アプリケーションで、PHPでデータ暗号化と復号化テクノロジーを実装する方法を紹介します。開発作業のリファレンスを提供できることを願っています。