PHPのOpenSSL関数で文字列の暗号・復号化を行う方法
だいぶ前にPHPでBlowfishアルゴリズムを用いた暗号化と復号化する方法をメモしたが、そちらはPearのCrypt_Blowfishパッケージというものを導入する必要があった。今回はパッケージの導入等は無しでPHPのデフォルトの機能で何とかしたかった。以下に対応方法をメモ。
目次
対応方法
ソースコード
<?php $data = '暗号化したい内容'; $method = 'AES-256-CBC'; $key = openssl_random_pseudo_bytes(16); $options = 0; $iv = openssl_random_pseudo_bytes(16); $encrypt = openssl_encrypt( $data, $method, $key, $options, $iv ); var_dump($encrypt); //string(44) "Nopuo9XSg1/jWW4BEyXyG+JJu3ND6m2EfCAoFaUcOGg=" $decrypt = openssl_decrypt( $encrypt, $method, $key, $options, $iv ); var_dump($decrypt); //string(24) "暗号化したい内容"
注意点
上記ソースコードでは$key / $ivをopenssl_random_pseudo_bytes関数を用いてランダムな文字列を生成しているが、実際に使用する場合はランダムな文字列を生成後にデータベース等に登録する必要がある点に注意する(ページを跨いだ際に文字列が再生成されて復号化できなかったりするため)。
リファレンス
openssl_encrypt
https://www.php.net/manual/ja/function.openssl-encrypt.php
openssl_decrypt
https://www.php.net/manual/ja/function.openssl-decrypt.php
openssl_random_pseudo_bytes
https://www.php.net/manual/ja/function.openssl-random-pseudo-bytes.php
関連記事
-
-
PHPで複数のファイルをまとめてzipファイル化し、ダウンロードさせる方法
PHPで複数のファイルをまとめてzipファイル化し、ユーザーにダウンロードさせた ...
-
-
PHPとLINEを連携させて通知を送る方法(file_get_contents / curlの2パターン)
PHPとLINEを連携させ、LINEに何らかの通知メッセージを送信したい。以下に ...
-
-
PHPでサイトURLからtitleとRSS用URLを取得
サイトのURLからRSS用URLとサイトタイトルを自動で取得したかった。その方法 ...
-
-
PHP5.4系でAPCが上手く動かなかったので5.5にアップデート&Zend OPcache導入
PHP5.3系から5.4系にアップデートしてから、WordPressがちょっと重 ...
-
-
PHPのテンプレートエンジン「Twig」の使い方について簡易メモ
開発中の案件でテンプレートエンジンのTwigを利用する機会があった。使ってみた感 ...