勉強したことのメモ

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のheader関数で気になった点
PHPのheader関数で気になった点

結論としてページの移転の場合はexitか ページ自体を消した方がよさ下。 &nb ...

PHPで引数の先頭に&(アンパサンド)をつける参照渡し(リファレンス渡し)について
PHPで引数の先頭に&(アンパサンド)をつける参照渡し(リファレンス渡し)について

他社が作成されたPHPのソースコードを拝見していると関数の引数の頭に&( ...

PHPでアクセスIPからランダム英数字のIDを作成
PHPでアクセスIPからランダム英数字のIDを作成

PHPで掲示板などにあるようなアクセスIPからランダム英数字のIDを作成したかっ ...

Facebookのタイムラインを取得して表示する方法
Facebookのタイムラインを取得して表示する方法

Facebookのタイムラインを取得してきて、表示させたいという案件があった。 ...

JavaScriptの「pako」ライブラリでGzip圧縮したデータをPHPで展開する方法
JavaScriptの「pako」ライブラリでGzip圧縮したデータをPHPで展開する方法

先日、JavaScriptの「pako」ライブラリで文字列やオブジェクト(連想配 ...