勉強したことのメモ

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で画像を分割し並べ替えて出力したものをJavaScriptで復元する方法

ある電子書籍サイトをブラウザの開発者ツールで見てみたところ、PHPでページ画像を ...

レンタルサーバでPHPのsystem関数やexec関数が使用できずにエラーが出力される

レンタルサーバ上でPHPのsystem関数を実行しようとすると「Fatal er ...

PHPでファイルを添付してメールを送信する方法(PHPMailer)

PHPでファイルを添付の上、メールを送信したかった。方法を探したところphpma ...

MySQLのREGEXPで半角記号を検索したい場合の対応方法

MySQLのREGEXPで半角記号を検索したい場合\\を付けてエスケープしないと ...

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

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