見出し画像

PHPでデータを暗号化する

PHPでデータを暗号化するには、以下の手順を踏む必要があります。

  1. 暗号化アルゴリズムの選択

  2. 暗号化キーの生成

  3. データの暗号化

  4. データの復号化

以下は、PHPでデータを暗号化するクラスの例です。このクラスは、AES暗号化アルゴリズムを使用してデータを暗号化し、復号化します。

class Encryption {
    protected $method = 'AES-256-CBC';
    protected $key;

    public function __construct($key) {
        $this->key = hash('sha256', $key, true);
    }

    public function encrypt($data) {
        $ivSize = openssl_cipher_iv_length($this->method);
        $iv = openssl_random_pseudo_bytes($ivSize);
        $encrypted = openssl_encrypt($data, $this->method, $this->key, OPENSSL_RAW_DATA, $iv);
        return base64_encode($iv . $encrypted);
    }

    public function decrypt($data) {
        $data = base64_decode($data);
        $ivSize = openssl_cipher_iv_length($this->method);
        $iv = substr($data, 0, $ivSize);
        $encrypted = substr($data, $ivSize);
        return openssl_decrypt($encrypted, $this->method, $this->key, OPENSSL_RAW_DATA, $iv);
    }
}

このクラスを使用するには、以下のようにします。

$key = 'My secret key';
$encryption = new Encryption($key);

$data = 'This is my secret data';
$encrypted = $encryption->encrypt($data);

echo $encrypted; // 例: "aIbYs1dkM1zQw==:sRcLQ8/H0+wBkZd0ll9XJcLPOL6hq08U6zk0UwKLDzg="
echo $encryption->decrypt($encrypted); // "This is my secret data"

この例では、SHA-256ハッシュを使用して、キーの長さをAES-256-CBC暗号化アルゴリズムに合わせて調整しました。また、データを暗号化する前に、ランダムなIVを生成しています。これにより、同じデータが暗号化されても、異なる暗号化テキストが生成されます。

いいなと思ったら応援しよう!