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にてacebook / twitter / Googleアカウントでソーシャル(SNS)ログインする方法
PHPにて制作したシステムで「facebook / twitter / Goog ...
-
PhpSpreadsheetで作成したエクセルファイルをPDFファイルに変換する方法
以前にPhpSpreadsheetでフォーマット用のエクセルを読み込み、指定した ...
-
eval関数について
ちょくちょく見ることがあったeval関数について、 なんとなく分かってきたのでメ ...
-
PHPでステータスコードを取得する方法
サーバーの死活監視でUptimeRobotを使っていたけど、どうも正常に監視して ...
-
PHPでスマホ(iPhone / Android)に画像をダウンロードさせる方法とダウンロード後の保存場所について
PHPで作ったシステムにスマホ(iPhone / Android)でアクセスし何 ...