ラボ > PHP:セキュリティ関連

PHP 可逆暗号化(openssl_encrypt()、openssl_decrypt())

暗号化したものを複合化したい(暗号にしたデータを元に戻す)

作成日:2020-05-14, 更新日:2022-09-22

暗号化と複合化

・暗号化 - openssl_encrypt()
・複合化 - openssl_decrypt()

サンプル

▼細かいことは置いといて・・・下記のような感じ

$data = 'あいうえおかきくけこさしすせそ';

// 設定
$method  = 'AES256';           // 暗号化方式
$key     = 'xxxxxxxxxxx';      // 鍵
$options = 0;                  // OPENSSL_RAW_DATA と OPENSSL_ZERO_PADDING を指定可
$iv      = '0123456789012345'; // IV(16文字)

// 暗号化
$encrypted = openssl_encrypt($data, $method, $key, $options, $iv);

// 復号
$decrypted = openssl_decrypt($encrypted, $method, $key, $options, $iv);

暗号化方式

▼利用可能なメソッド一覧は「openssl_get_cipher_methods()」で調べる

var_dump(openssl_get_cipher_methods(true));

各メソッドの違いは不明。
・・・どれを使えば良いか分からず・・・見ていると「AES128」「AES256」のどちらかを使っている人が多く感じた。

OPENSSL_RAW_DATA、OPENSSL_ZERO_PADDING

指定したら・・・暗号化できなかった・・・原因は未調査のため不明。

IV

桁数に指定があるかは不明・・・19文字でやったらエラーが出た

関連項目