PHPでBlowfishアルゴリズムを用いた暗号化と復号化方法
2024/02/20
PHPでBlowfishアルゴリズムを用いてCBCモードで暗号化と復号化を行いたかった。調べたところPearのCrypt_Blowfishパッケージというものを導入することで実装できる模様。以下にパッケージの導入方法及び暗号化・復号化のソースコードをメモ。
パッケージの導入
SSH接続不可のサーバーだったので以下ページ右側のDownloadの下にある「1.1.0RC2」というリンクからダウンロードした。
https://pear.php.net/package/Crypt_Blowfish/download
SSH接続できる場合は以下でインストールできるみたい。
pear install Crypt_Blowfish-1.1.0RC2
尚、ダウンロードしたファイルを解凍すると以下のようになっている。
Crypt_Blowfish-1.1.0RC2/ ├Blowfish/ └Blowfish.php
「Crypt_Blowfish-1.1.0RC2」のディレクトリ名を「Crypt」に変更してアップロードする。
暗号化と復号化
暗号キーや暗号ベクトルは固定と想定する。以下がソース。
<?php define('PASS_VECTOR', 'xxxxxxxxx'); //暗号化ベクトル define('PASS_KEY', 'xxxxxxxxxxxxxxxx'); //暗号化キー require_once 'Crypt/Blowfish.php'; //暗号化 function passwordEncrypt( $pass ){ $blowfish = Crypt_Blowfish::factory('cbc', PASS_KEY, PASS_VECTOR); $encrypt_data = $blowfish->encrypt($pass); return base64_encode($encrypt_data); } //復号化 function passwordDecrypt( $pass ){ $blowfish = Crypt_Blowfish::factory('cbc', PASS_KEY, PASS_VECTOR); $decrypt_data = $blowfish->decrypt(base64_decode($pass)); return $decrypt_data; }
Blowfishとは
暗号方式の一つ。ライセンスフリーなので幅広く使われているらしい。
CBCモードとは
暗号利用モードの一つ。ブロックの暗号が云々とのことだけど、これはイマイチ理解できなかった。
関連記事
-
-
PHPのhash_file関数でファイルの改ざんを検知する方法
サイト内の特定の数ページのみ簡易的なものでも良いので自動でファイルの改ざんチェッ ...
-
-
PHPでプロキシ経由で他サーバーに接続する方法(file_get_contents / curlの2パターン)
PHPでfile_get_contentsやcurlで他サーバに接続する際に自サ ...
-
-
PHPで多次元連想配列のキーを指定してソート
やりたかった事は、 ・多次元配列があってcodeというキーでソートしたい という ...
-
-
PHPでお問い合わせ等のform構築時にCSRF対策を行う方法
他社が制作されたお問い合わせフォームを改修する案件があった。ソースコードを拝見し ...
-
-
PHPで値が空の配列を削除
やりたかった事は配列でキーは入っていて値が入っていない ものを削除したかった。 ...