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で複数の画像やテキストファイルをzipファイルとしてダウンロードさせる方法
PHPで画像ファイルやテキストファイルをzip圧縮して、ダウンロードさせたかった ...
-
-
Composer自体のインストールとmonolog及びTwigをComposer経由でインストールする方法
「Composerで○○をインストール」というのをよく見かけるがComposer ...
-
-
Stripe Checkoutにてクレジットカード決済の際に3Dセキュア対応にする方法
先日Stripe Checkoutを用いたクレジットカード決済機能についてメモし ...
-
-
迷惑メール対策でフォームにGoogle reCAPTCHA v2を導入する方法
お問い合わせフォームのスパムメール対策としてreCAPTCHAを導入したいという ...
-
-
フォームからアップロードした画像にPHPでロゴ画像(透かし)を追加する方法
フォームから送られてきた画像に対してサイトロゴみたいなロゴ画像を右下等、指定の位 ...