勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPでBlowfishアルゴリズムを用いた暗号化と復号化方法

   2024/02/20  PHP

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

  関連記事

PHPでキーや値は保持したまま順番を入れ替える

PHPで連想配列のキーや値は保持したまま順番をランダムに入れ替えたかった。一発で ...

Codeigniter4でMySQLに接続しCRUD操作する方法

Codeigniter4.4.4でMySQLに接続しCRUD操作したい。また、任 ...

PHPでdatetime型のデータを年月日時分秒に分割する方法

datetime型を年月日時分秒でそれぞれに分割させたい時に今まではいちいちex ...

PHPで指定日から曜日を割り出す

曜日ってどうやって割り出すの? となったのでメモ。 ■リファレンス http:/ ...

CodeIgniter4で独自の404ページを表示する方法

CodeIgniter4にて存在しないページをブラウザから開くと、デフォルトの状 ...