勉強したことのメモ

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

  関連記事

jQueryからAjax経由でPHPにリクエストしCookieを操作する方法

先日PHPでCookie保存時にHttpOnly / Secure属性を設定する ...

PHPでエラーログ等のログファイルから指定した行数を表示させる方法

エラーログを最新分から指定行数表示させる プログラムがあって、どういった作りにな ...

バニラPHPでフラッシュデータ(フラッシュメッセージ)機能を実装する方法

PHPフレームワークのCodeIgniterを勉強していた際にページ遷移好みに表 ...

フォルダにリンク制限をかける

imgというフォルダがあり、直接URLを叩いても 中身を見られないけど、同一サー ...

PHPでJavaScriptを圧縮するライブラリ「JShrink」の利用方法

サイト内でJavaScriptを用いる場合、外部のライブラリやプラグインだと圧縮 ...