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で簡単にCSVファイルの生成
簡単にデータ並べるだけのCSVファイル生成。 file_put_contensで ...
-
-
UTF-16にエンコードされている文字列をUTF-8へデコード
エンコードされている文字列であまり見かけない感じのものがあった。UTF-8やSh ...
-
-
PHPで複数のファイルをまとめてzipファイル化し、ダウンロードさせる方法
PHPで複数のファイルをまとめてzipファイル化し、ユーザーにダウンロードさせた ...
-
-
FLASHから受信した画像をPHPで保存し、サムネイルも作る
■参考サイト ・FLASH http://www.ilovex.co.jp/bl ...
-
-
CodeIgniter4で独自の404ページを表示する方法
CodeIgniter4にて存在しないページをブラウザから開くと、デフォルトの状 ...