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のOpenSSL関数で文字列の暗号・復号化を行う方法だいぶ前にPHPでBlowfishアルゴリズムを用いた暗号化と復号化する方法をメ ... 
- 
					
													  
- 
					MySQLでランダムにデータを取得しつつページング機能も実装する方法MySQLからデータを持ってくる際にランダムな表示を行ってほしいと言われた。ただ ... 
- 
					
													  
- 
					PHPで引数の先頭に&(アンパサンド)をつける参照渡し(リファレンス渡し)について他社が作成されたPHPのソースコードを拝見していると関数の引数の頭に&( ... 
- 
					
													  
- 
					PhpSpreadsheetでフォーマット用のエクセルを読み込み、指定したセルにデータを書き込んだ上で別名で保存する方法PHPで納品書等のフォーマット用のExcelを読み込み、指定したセルにデータを書 ... 
- 
					
													  
- 
					Class 'DOMDocument' not foundエラーの対処方法PHPでphpQueryというライブラリを利用しようとすると「Fatal err ...