勉強したことのメモ

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でCSVファイルを出力する際に「①」や「㈱」等の環境依存文字が文字化けする対応方法

過去記事の方法を用いてPHPでCSVファイルを出力すると所々「?」という形に文字 ...

CodeIgniterのバージョンの調べ方

CodeIgniterを使っているシステムがあったが、どうも記憶しているディレク ...

PHPで数字のプラスとマイナスを反転させる方法

PHPのプログラム内で数値のプラスとマイナスを反転させたい。以下に対応方法をメモ ...

PHPでJSONデータを見やすく整形した上で表示させる方法

PHPで何らかのデータをjson_encodeでJSONに変換し、そのままech ...

composerでライブラリのインストールとインストール時のエラー対応方法

composerでライブラリをインストールする際に「The following ...