PHP7 / 8でBlowfishアルゴリズムを用いた暗号化と復号化方法
大分前にPHPでPearのCrypt_Blowfishパッケージを使用し、Blowfishアルゴリズムを用いた暗号化と復号化方法というのをメモしたが、PHP8の環境で使おうとするとエラーになる。どうもPHP7で非推奨になったみたい。そのため当該パッケージは使わずBlowfishアルゴリズムで暗号・復号化する方法をメモ。
対応方法
ソースコード
パスフレーズと初期化ベクトルは適宜変更すること。
<?php
define('PASSPHRASE', 'xxxxxxxxxx'); //パスフレーズ
define('VECROT', 'xxxxxxxxxx'); //初期化ベクトル
define('CIPHER_ALGO', 'bf-cbc'); //暗号メソッド
function passwordEncrypt($target){
if( $m = strlen($target) % 8){
$target .= str_repeat("\x00", 8 - $m);
}
$encrypt = openssl_encrypt(
$target,
CIPHER_ALGO,
PASSPHRASE,
OPENSSL_RAW_DATA | OPENSSL_NO_PADDING,
VECROT,
);
return base64_encode($encrypt);
}
function passwordDecrypt($target){
$decrypt = trim(
openssl_decrypt(
base64_decode($target),
CIPHER_ALGO,
PASSPHRASE,
OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING,
VECROT,
)
);
return $decrypt;
}
$target = '暗号化したい文字列';
$test_encrypt = passwordEncrypt($target);
var_dump($test_encrypt); //string(44) "ef79hQpAM4ufxg1VB9dfSoG5wEQMt2f95k2omAe1azk="
$test_decrypt = passwordDecrypt($test_encrypt);
var_dump($test_decrypt); //string(27) "暗号化したい文字列"
リファレンス
openssl_encrypt
https://www.php.net/manual/ja/function.openssl-encrypt.php
openssl_decrypt
https://www.php.net/manual/ja/function.openssl-decrypt.php
参考サイト
関連記事
-
-
PHPでメール送信時に返信先(Reply-To)を指定する方法
PHPにてメールを送信し、そのメールに対して返信しようとすると通常は送信元のメー ...
-
-
CodeIgniter4でのメール送信方法(テキスト・HTMLメール)
CodeIgniter4.4.4でテキストメール及びHTMLメールを送信したい。 ...
-
-
フォームからCSVファイルをアップロードしてPHPの配列に格納する方法
formからcsvファイルをアップロードさせて、PHPで色々処理したかった。とり ...
-
-
PHPでLINEログイン後「ユーザー名」「ユーザーID」「プロフィール画像URL」「メッセージ」を取得する方法
<a>タグのリンクからページ遷移するとLINEログインし、その後に「 ...
-
-
PHPで複数のファイルをまとめてzipファイル化し、ダウンロードさせる方法
PHPで複数のファイルをまとめてzipファイル化し、ユーザーにダウンロードさせた ...